C++Vector的使用_各种花哨用法总结
Posted foxer-z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++Vector的使用_各种花哨用法总结相关的知识,希望对你有一定的参考价值。
vector,向量,有序数列。连续的空间存储,可以使用[ ]操作符,可以快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间随机的插入、删除元素要慢。如果空间不够时,有一个重新分配更大空间的过程。
入门使用
#include<vector>
vector<int> vec = {1,2,3};
vec.push_back(4);
vec.push_back(5);
for(int i=0;i<vec.size();++i)
cout<<vec[i];
常用方法一览
vec.push_back(x);//在数组的最后添加一个元素 x 。
vec.pop_back();//无参,去掉数组的最后一个数据。
vec.begin();//无参,返回数组头的迭代器。
vec.end();//无参,返回数组的最后一个单元+1的迭代器。
vec.clear();//无参,清空当前的vector。
vec.empty();//无参,判断vector是否为空。
vec.size();//无参,返回当前使用数据的大小。
vec.capacity;//无参,返回当前vector分配的大小。
vec.max_size();//无参,返回vector最大可以是多大。
vec.at(p);//返回数字 p 位置的数据。比 [ ] 操作符安全,有超出范围检查,超出范围可以抛异常。
int a = vec.front();//无参,返回数组头的引用。对 a 的修改不会影响vector的内容。
int &a = vec.front();//无参,返回数组头的引用。对 a 的修改同时会改变vector对应的元素^1^。
int b = vec.back();//无参,返回数组的最后单元的引用。同front()。
vec.erase(iterator position);//删除迭代器指向的元素,容器大小改变,已有迭代器可能实效。
vec.erase(iterator first,iterator last);//删除[first,last)中元素。
vec.swap(vec2);//与另一个vector交换数据。
进阶使用
以vector
vec,vec2;为例,iter通指vector ::iterator。
创建与初始化
vector<int> vec;//创建一个空vector。
vector<int> vec = {1,2,3};//列表初始化为{1,2,3}。对于vector<int>类型的函数可以直接用{1,2,3}。
vector<int> vec(int n);//创建一个大小为 n 的vector。
vector<int> vec(int n,int t);//创建vector,元素个数为n,值均为t。
vector<int> vec(vector&);//复制另一个vector。
vector<int> vec(begin,end);//复制[begin,end)区间内另一个数组的元素到vector中。begin、end都是迭代器。尚且不明确能从哪些容器中进行复制。
vector<vector<int>> vec = {{1,2,3},{4,5,6},{7,8,9}};//二维数组。
添加
vec.insert(iter,x);//迭代器iter指向元素前增加一个元素 x 。
vec.insert(iter,n,x);//迭代器指向元素前增加 n 个相同元素 x 。
vec.insert(iter,iter_first,iter_first);//迭代器指向元素前插入另一个相同类型向量的[iter_first,iter_first)间的数据。
遍历
for(int i=0;i<vec.size();++i) cout<<vec[i];
// 迭代器遍历,迭代器看作指针使用。
for(vector<int>::iterator iter = vec.begin();iter!=vec.end();++iter)
vec2.push_back(*iter);
// auto代替迭代器,C++11标准。
for(auto iter = vec.begin();iter!=vec.end();++iter)
vec2.push_back(*iter);
拷贝vector
vector<int> vec2(vec);//初始化时拷贝。
vec.assign(vec2.begin(),vec2.end());//利用assign函数^2^拷贝。
vec.assign(n,x);//将vector替换成 n 个元素 x ,之前内容清除。
vec.insert(vec.end(),vec2.begin(),vec2.end());//用insert()函数向vec末尾提添加vec2。
vec.swap(vec2);//交换两个vector。
assign()函数
删除
其他
关于vector的使用可以用这些力扣题作为进阶练习:
| 加一 |有效的数独 | 旋转图像 |
[^1]: 参考(blog.csdn.net/sinat_42483341/article/details/87465982)
[^2]: 参考baike.baidu.com/item/assign()/9716433?fr=aladdin
以上是关于C++Vector的使用_各种花哨用法总结的主要内容,如果未能解决你的问题,请参考以下文章