3.字符串、向量和数组

3字符串、向量和数组

3.1命名空间的using声明

Using std::cin;

Using namespace std;

或者直接用std::cout

注意:头文件不应包含using声明。

3.2string

初始化

3.字符串、向量和数组_第1张图片

使用“=”是拷贝初始化,不适用符号是直接初始化

3.字符串、向量和数组_第2张图片

String::size_type:string定义的一种类型,具体类型未知,可以通过auto或者decltype推断。

String的比较先比较长度,长度相同,则比较第一个相异的元素的字典序。

String可以直接使用+,但必须+号两边必须有一个为string类型,也可以与“字符”直接相加。

处理string中字符

Cctype头文件中

3.字符串、向量和数组_第3张图片

可以通过for语句遍历或者下标访问,但是下标访问注意是否在string范围内。

3.3vector

初始化

3.字符串、向量和数组_第4张图片

两种例外情况:其一,使用拷贝初始化(即使用=时),只能提供个初始值:其二,如果提供的是个类内初始值,则只能使用拷贝初始化或使用花括号的形式初始化。第三种特殊的要求是,如果提供的是初始元素值的列表,则只能把初始值都放在花括号里进行列表初始化,而不能放在圆括号里:

可以采用列表初始化{“”, “”, “”}

添加元素

Push_back在向量末尾增加一个元素,不需要提前初始化空间。

3.字符串、向量和数组_第5张图片

Vector也可以for语句,下标访问。

3.4迭代器介绍

Begin指向第一个元素,end(尾后迭代器)自相最后元素的下一个位置。

运算符一般使用==和!=;

3.字符串、向量和数组_第6张图片

迭代器的类型有const_iterator(可读)和iterator(可读写)。

Cbegin和cend是返回头尾迭代器,返回值都是const_iterator;

3.字符串、向量和数组_第7张图片

3.5数组

与vector不同的地方,数组的大小确定不变,不能随意向数组中增加元素。

如果不清楚元素的确切个数,请使用vector。

初始化

维度必须是一个常量表达式。

3.字符串、向量和数组_第8张图片

字符数组的特殊性:字符串结尾处还有一个空字符,也会拷贝到字符数组中去。

不允许拷贝和赋值。

下标访问

For语句,访问数组下标一般定义为size_t类型,但不能超过其size。

指针和数组

顺组名即指针,使用数组的时候编译器一般会把它转换成指针。

指针也是迭代器,可用begin()和end()得到数组的头尾。

给一个指针加上(减去)某整数值,结果仍是指针。新指针指向的元素与原来的指针相比前进了(后退了)给整数值个位置。

解引用和指针运算的交换:指针加上一个整数所得的结果还是一个指针。假设结果指针指向了一个元素,则允许解引用该结果指针:

指针指向的是数组中的元素(或者数组中尾元素的下一位置);

3.字符串、向量和数组_第9张图片

使用数组的时候其实真正用的是指向数组首元素的指针。

3.字符串、向量和数组_第10张图片

3.6多维数组

数组的数组(由内向外的顺序阅读)

一个维度表示数组本身大小,另外一个维度表示其元素(也是数组)大小;

For语句循环时,如果要改变值的大小用&;

3.字符串、向量和数组_第11张图片
3.字符串、向量和数组_第12张图片

你可能感兴趣的:(3.字符串、向量和数组)