标准库类型vector
标准库类型vector表示对象的集合,其中所有对象的类型都相同。因为vector“容纳着”其他对象,所以它也被称作容器。
1、vector的使用
头文件: #include <vector>
vector是一个类模板:编译器根据模板创建类或函数的过程称为实例化,当使用模板时,需要指出编译器应把类或函数实例化成何种类型。
例如:
vector<int> ivec; //ivec中保存了int类型的对象
vector<Sales_item> Sales_vec; //Sales_vec中保存了Sales_item类型的对象
vector<vector<string>> file; //file中保存的是vector对象
***备注:*某些编译器可能仍需要以老式的声明语句来处理元素为vector的vector对象。
例如:
vector<vector<int> >
2、vector对象的定义和初始化
vector<T> v1
//v1是一个空vetor,执行默认初始化
vector<T> v2(v1)
//v2中包含v1所有元素的副本,即是使用v1对v2进行初始化
vector<T> v2=v1
//等价于v2(v1)
vector<T> v3(n,val)
//v3中包含了n个重复的元素,每个元素的值都是val
vector<T> v4(n)
//v4中包含了n个重复地执行了值初始化的对象
vector<T> v5{a,b,c……}
//v5中包含了初始值个数的元素,每个元素被赋予了相应的初始值
vector<T> v5={a,b,c……}
//等价于v5{a,b,c……}
3、向vector对象中添加元素
push_back(t)
——把一个值t当成vector对象的尾元素“压到(push)”vector对象的“尾端(back)”。
例如:
vector<int> v; //首先创建一个空的vector对象
for(int i = 0; i != 100; ++i)
v.push_back(i); //依次把整数值放到v的尾端
//此时,v中有100个元素,值分别是0~99
4、其他vector操作
v.empty()
如果v中不含有任何元素,则返回真,否则返回假v.size()
返回v中元素的个数v.push_back(t)
向v的尾端添加一个值为t的元素v[n]
返回v中第n个位置上的元素的引用v1 == v2
v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值都相同
5、迭代器
系统自带的迭代器:v.begin()
返回指向第一个元素的迭代器v.end()
返回指向容器“尾元素的下一位置”的迭代器,称作尾后迭代器或者尾迭代器
备注:如果容器为空,则begin和end返回的是同一个迭代器,都是尾后迭代器
自定义迭代器:
vector<int>::iterator iter;
//iter能读写vector<int>的元素
vector<int>::const_iterator iter2;
//iter2只能读元素,不能写元素
迭代器运算符及运算:*iter
返回迭代器iter所指元素的引用iter->mem
获取iter所指元素的名为mem的成员,等价于 (*iter).mem
++iter
令iter指示容器中的下一个元素--iter
令iter指示容器中的上一个元素iter1 == iter2
判断两个迭代器是否相等,如果两个迭代器指示的是同一个元素或者它们是同一个容器的尾后迭代器,则相等;反之不相等。
来源:CSDN
作者:微拂素罗衫
链接:https://blog.csdn.net/m0_37714470/article/details/104131734