3字符串、向量和数组
3.1命名空间的using声明
Using std::cin;
Using namespace std;
或者直接用std::cout
注意:头文件不应包含using声明。
3.2string
初始化
使用“=”是拷贝初始化,不适用符号是直接初始化
String::size_type:string定义的一种类型,具体类型未知,可以通过auto或者decltype推断。
String的比较先比较长度,长度相同,则比较第一个相异的元素的字典序。
String可以直接使用+,但必须+号两边必须有一个为string类型,也可以与“字符”直接相加。
处理string中字符
Cctype头文件中
可以通过for语句遍历或者下标访问,但是下标访问注意是否在string范围内。
3.3vector
初始化
两种例外情况:其一,使用拷贝初始化(即使用=时),只能提供个初始值:其二,如果提供的是个类内初始值,则只能使用拷贝初始化或使用花括号的形式初始化。第三种特殊的要求是,如果提供的是初始元素值的列表,则只能把初始值都放在花括号里进行列表初始化,而不能放在圆括号里:
可以采用列表初始化{“”, “”, “”}
添加元素
Push_back在向量末尾增加一个元素,不需要提前初始化空间。
Vector也可以for语句,下标访问。
3.4迭代器介绍
Begin指向第一个元素,end(尾后迭代器)自相最后元素的下一个位置。
运算符一般使用==和!=;
迭代器的类型有const_iterator(可读)和iterator(可读写)。
Cbegin和cend是返回头尾迭代器,返回值都是const_iterator;
3.5数组
与vector不同的地方,数组的大小确定不变,不能随意向数组中增加元素。
如果不清楚元素的确切个数,请使用vector。
初始化
维度必须是一个常量表达式。
字符数组的特殊性:字符串结尾处还有一个空字符,也会拷贝到字符数组中去。
不允许拷贝和赋值。
下标访问
For语句,访问数组下标一般定义为size_t类型,但不能超过其size。
指针和数组
顺组名即指针,使用数组的时候编译器一般会把它转换成指针。
指针也是迭代器,可用begin()和end()得到数组的头尾。
给一个指针加上(减去)某整数值,结果仍是指针。新指针指向的元素与原来的指针相比前进了(后退了)给整数值个位置。
解引用和指针运算的交换:指针加上一个整数所得的结果还是一个指针。假设结果指针指向了一个元素,则允许解引用该结果指针:
指针指向的是数组中的元素(或者数组中尾元素的下一位置);
使用数组的时候其实真正用的是指向数组首元素的指针。
3.6多维数组
数组的数组(由内向外的顺序阅读)
一个维度表示数组本身大小,另外一个维度表示其元素(也是数组)大小;
For语句循环时,如果要改变值的大小用&;
网友评论