Vector&&迭代器&&数组

vector

标准库类型vector表示对象的集合,其中所有的对象类型都相同;集合中每个对象都有一个与之对应的索引,索引用于访问对象。

vector是一个类模板,是模板而非类型。

1. 初始化vector对象

vector<T> v1      T类型空vector,执行默认初始化
vector<T> v2(v1)  v2包含所有v1元素的副本
vector<T> v2=v1   同上
vector<T> v3(n,val)  v3包含n个val
vector<T> v4(n)   包含n个重复执行值初始化对象
vector<T> v5{a,b,c...}  每个元素赋相应的初始值
vector<T> v5={a,b,c...}  同上(不可以用圆括号)

vector<int>v(10):v有10个元素每个值都为0
vector<int>v{10}:v有1个元素,该元素的值为10

vector<string> v{"kk"}   列表初始化,v有1个元素
vector<string> v("kk")   错,不能用字符串字面值构建vector对象
vector<string> v{10}     有10个默认初始化的元素
vector<string> v{10,"kk"}   有10个值为"kk"的元素

2. 相关操作

(1)C++标准要求vector能高效快速添加元素,因此既然vector对象能高效增长那么在定义时指定大小没什么意义的,还会使性能更差,除非所有的元素都一样的时候。

(2)相关操作函数

v.push_back(t)    尾部添加元素
v.empty()        判断是否为空
v.size()         返回v中元素个数
v[n]             返回第n个位置的引用
v1=v2            拷贝初始化
v1={a,b,c,d...}  用列表元素替换v1
v1==v2           元素数量及对应位置元素是否都相等
>,>=,<,<=        字典序比较

(3)不能用下标形式添加元素,用push_back;下标运算符可用于访问已存在的元素而不能用于添加元素(string对象也是);

迭代器

1. 所有标准库容器都可以使用迭代器;

2. 使用

  (1)有迭代器的类型同时拥有返回迭代器的的成员,如这些类型都拥有begin(返回指向第一个元素的迭代器)、end(返回指向容器(或string对象)尾元素的下一个位置的迭代器,即不存在的尾后元素)成员;如果容器为空,begin和end均返回尾后迭代器;

*iter        返回iter所指元素的引用
iter->mem    解引用iter并获取该元素名为mem的成员,等价于(*iter).mem
++iter       指向下一个元素
==           判断两个迭代器是否相等,即指示同一个元素或他们是同一容器的尾后迭代器;

(2)注意:使用了迭代器的循环体,都不要向迭代器所属的容器添加元素;

扫描二维码关注公众号,回复: 2795600 查看本文章

数组

1. 数组的大小确定不变,不能随意向数组中增加元素;数组中的元素的个数也属于数组类型的一部分,编译的时候维度应该是已知的,即维度必须是一个常量表达式。

2. 注意字符数组必须有位置存放空字符!

3. 不能将数组的内容拷贝给其他数组作为初始值,也不能用数组给其他数组赋值。

4. 访问数组元素:下标、迭代器

参考:C++ primer

猜你喜欢

转载自blog.csdn.net/qq_38735931/article/details/81607263