从C语言中继承的库以及函数
scanf : int a; scanf ("%d", &a); 这里的 "%d"是占位符, 函数从标输入读取字符串。 按照 int 类型进行解析, 处理之后保存在 a 变量中, 必须提供a 的地址才能保存成功 对于其他的数据类型,有不同的占位符: 有符号整数 (int):%d 或 %i 字符型 (char) :%c 字符串(string) :%s 无符号性整数 (undesign):%u 浮点数(double):%f 科学技术法 : %e 内存地址 : %p
对于字符串 如果用%s 读入字符串, 那么只能将其保存在C风格的字符串数组中(char),而不能直接将其保存到C++的 std::string 中
scanf在遇到空格时就已经终止读入了,并不会包括空格
printf用法几乎和scanf一样
sprintf将格式化的数据写到一个字符串里
sprintf(information, "%s is a %s. He is %d-year-old and %fcm tall.", name, gender, age, height);
第一个参数是字符串变量,第二个参数才是格式
用于处理字符串的标准库 —— string.h——在C++中写作 cstring, 用#include导入 strlen 函数可以获取字符串的长度 strlen(string) strcpy 函数可以复制字符串 //将 string 的内容复制到 copy 字符串中 strcpy(copy, string); strcmp 函数用于比较两个字符串的大小 strcmp(a,b) 当a>b输出正数 strcat(hello, world); 连接字符串
int main() {
char hello[100] = "hello ";
char world[100] = "world"'
printf("%s\n", hello);
strcat(hello, world);
printf("%s\n",hello);
return 0;
}
输出结果为
hello
hello world`
这里对字符串连接后,原来的字符串(字符数组)会随之改变
}** 字符串之间也有大小之分比较大小时,会对首字母的ascll码进行比较,与字符串的长度无关,除非是两个字符串只相差最后一个字符,那么少字符的就小于多字符的,若多出一个 空格,两字符串也是不相等的
在C语言中没有字符串类型 只能用字符数组来保存字符串
char name[10][10];
int main() {
for (int i = 0; i < 10; i++){
scanf("%s",&name[i]);
}
vector vector 的模板定义保存在头文件中, 使用vector还需要引入对应的命名空间: using std::vector; 用 vector 定义一个动态数组的写法:
vector<类型>数组对象名(长度);
定义一个大小为10 的,存储整型变量的动态数组对象 array:
vector<int>arr(10);
也可以不定义初始长度:
vector<int>arr;
vector<类型>数组对象名(数组长度,元素初值); vector v(10,1); //建立一个有10和元素的vector整型对象v, 初值全设置为1
vector 是一个被封装的对象, 不允许访问其地址, 其还有个成员函数size(),返回当前数组的大小 size的用法为 : 数组名.size();
创建一个vector类型的二维数组 :
vector<vector<int>> matrix(m);
push_back —— vector的一个重要方法 其作用是 讲一个元素插入到当前vector 的末尾。这个方法可以自动扩容,不用担心容量或者下标越界。 用push_back 把 a 插入到 b[i] 中:
b[i].push_back(a);
sort函数
:有三个参数 sort(strat, end, 排列方式) 排列方式默认是从小到大 std::greater<数据类型>可以实现降序排列
sort(arr.begin(),arr,end(),greater<int>());
start ——> 数组首元素的地址 用begin获取
end ——> 数组末元素的地址 用end获取
greater<int>() ——>实现降序,若不写就是升序
Find函数
find(strat, end, 查找元素):用于在指定范围内查找和目标元素值相等的第一个元素。 find() 函数的底层实现,其实就是用运算符将 查找元素 和 [strat, end) 区域内的元素逐个进行比对。这也就意味着, [strat, end) 区域内的元素必须支持"=="运算符.
find(arr.begin(), arr.end(), 查找元素);
start ——> 数组首元素的地址 用begin获取
end ——> 数组末元素的地址 用end获取
例 读入若干个数字,然后对其进行从大到小排序,依次输出这些数字,并输出其个数。要去除其中重复的数字
#include <vector>
#include <iostream>
#include <algorithm>
using std::greater;
using namespace std;
using std::vector;
int main(){
int input;
int i = 0;
vector<int>arr;
while(cin >> input){
auto iter = find(arr.begin(), arr.end(), input);
if (iter == arr.end()){
arr.push_back(input);
}
i = i + 1;
}
sort(arr.begin(),arr.end(),greater<int>());
for (int i = 0; i < arr.size(); i++){
cout << arr[i] << endl;
}
cout << arr.size();
}
输入: 3 1 2 5 4
输出: 5 4 3 2 1 5
|