string类
直接初始化和拷贝初始化
string s1 = "hallo";//拷贝
string s2("hiya");//直接
string s3(10,'o');//直接+
string的读写
使用IO操作符读取string对象
string s;
cin >> s;
cout << s << endl;
string对象会自动忽略开头空白,读到下一处空白为止。
如果输入hello world,那么只会输出hello。
使用getline读入string
如果想要读入空白,那么就可以使用getline(cin,s)
getline(cin,s);
vetor向量
编译器根据模板创建类或者函数的过程叫做实例化。
vector的初始化
如果使用{}括号,那么就是列表初始化,如果使用(),那么就是调用构造函数初始化。
vector的添加
不能使用下标添加,使用push_back()添加。
vector高效增长
提前预定容量,容量满了之后就double倍增。可以使用
vector也可以使用比较运算符比较,按字典序比较。
数组
理解复杂的数组声明
int *ptr[10];//10个指针变量的数组
int &no[10];//不存在引用的数组
int (*parray)[10] = &array;
//指向一个含有10个int的数组的指针
int (&arrayref)[10] = arr;
//引用一个含有10个int的数组
默认情况下类型修饰符从右向左绑定,如果有括号那么想绑定括号内的。
那么就可以理解上述的内容了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IYRJL862-1616413384130)(D:/BaiduNetdiskDownload/%E7%BD%91%E7%9B%98%E6%96%87%E4%BB%B6%E5%BF%AB%E4%BC%A0/1616231160679.jpg)]
许多情况下面,用数组的名字代表数组的首元素指针。
C风格的字符串
- 使用strcmp,strcart,strcpy代替string的使用;
- string的成员函数c_str()返回一个等价的C风格字符串。