C++学习记录-vector
C++学习记录-STL:vector
一、认识vector
1.vector是向量类型,可以存储多种类型的数据,因此属于STL中容器的一种
2.vector可以理解为动态数组。内存动态扩展的方式为:新开辟一块更大的内存,将数据拷贝过去,
再释放原来的内存
3.使用vector时应包含头文件
4.vector容器中也可以存放自定义的数据类型(比如类),也可以存放另一个容器,只要声明数据
类型即可
二、vector的初始化
语法:vector<数据类型> 名称
1 | - vector<int> a;//向量名为a |
vector的赋值操作:
1.等号赋值:
1 | vector<int> v1; |
2.assign赋值:
1 | vector<int> v2; |
3.assign赋值(n个元素形式)
1 | vector<int> v2; |
三、vector的迭代器
vector<数据类型>::iterator 迭代器名=指示的数据
示例:
1 | vector<int> a; |
注意:a.end()指向的是容器最后一位数的后一位,当a.begin()=a.end()时容器为空(类似于队列)
在vector中,插入和删除操作会使当前迭代器失效。因为动态管理内存是重新分配空间。
四、vector的基本操作
1.向后插入数据 向量名.push_back(数据)
1 | a.push_back(777); |
2.从中间插入数据 向量名.insert(向量名.begin()+i,777) ,第i+1个元素为777
1 | a.insert(a.begin()+6,777);//第7个元素为777,即在第六个元素后插入777 |
3.删除末尾数据 向量名.pop_back();
1 | a.pop_back(); |
4.删除数据 向量名.erase(向量名.begin()+i) 删除第i+1个元素
1 | a.erase(a.begin()+2);//删除第三个数据 |
5.删除区间 向量名.erase(向量名.begin()+i,向量名.end()-j) 删除第i+1个元素到第(总个数-j)个元素
1 | a.erase(a.begin()+1,a.end()-2);//删除第2个到第3个元素(假设a有5个元素) |
6.清空向量 向量名.clear()
1 | a.clear();//清空 |
7.遍历算法for_each
语法:for_each(开始变量,结束变量,欲调用的函数);
注意:应包含algorithm头文件
和sort一样,左闭右开
示例:
1 | void print(int t) |
五、vector容器容量和大小的操作
1.判断容器是否为空:empty();
1 | vector<int> v1; |
2.获取容器的容量:capacity();
1 | vector<int> v1; |
3.获取容器大小:size();
1 | vector<int> v1; |
4.重新指定容器的大小:resize(新的大小,填充的元素);
1 | vector<int> v1; |
六、vector数据的获取操作
1 | vector<int> v1; |
七、vector互换容器
向量名.swap(欲交换的向量名)
1 | vector<int> v1; |
八、容器预留空间
向量名.reserve(预留的长度);
1 | vector<int> v1; |





