#include<vector>头文件
vector类称作向量类
?
我喜欢把知识点拿出来实际操作。
提纲挈领的总结实际工程中用到的方式方法,最后列表展示出来,补充一些常用实际案例,最直接。
既方便看,又方便提取。
?
之前不了解动态数组vector的事,感觉像一座大山,没有办法迈过去。可是当深入的了解并使用到它的时候,觉得他真的是太便捷了。
比如说一般的数组a,一旦我们定义好了,就不能对里面的排序进行随意的增删改(或者说增删改的代价太大):
1.因为数组a在创建的时候,系统自动给它分配了一段固定长度内存,无法重定义数组的大小。
2.值写进去可以被抹掉,但那一段内存始终被占用着,无法实现「值没了,后1位变量前进一格」。
3.数组a可以被声明为空,如a[],但是在末尾添加数值还是很局限。而动态数组vec可以实现任意类型的push_back。
……
我目前探索到的动态数组vec:vec内变量个数可变,可随意插入,可随你删除,数组尾部添加动态变量很便利…
总之,很赞。
?
很初级的操作:
string类型 vector<string> s1; vector<string> s2; s1.push_back(s2); | 结构体类型 Struct ST st; vector<ST> st1; vector<ST> st2; st1.push_back(st2); |
迭代器访问,遍历 (类似指针) | vector<int>::iterator it; for(it=vec.begin();it!= vec.end();it++) cout<<*it<<endl; |
vector遍历 | for(int i=0; i<vec.size(); i++) |
?
常用的初始化及函数:
初始化vector | vector<int>v1; | 初始化为空 |
vector<int>v2(v1); | 用另一个v1初始化v2 | |
vector<int>v3(n, 3); vector<string>v3(5, "hello"); | 初始化为n个3 5个"hello" | |
vector<int>v4(10); | 初始化为10个空值 | |
int a[10]={1,2,3,4,5,6}; vector<int>v5(a,a+6); vector<int>v5(&a[0],&a[6]); | 初始化为:已有数组a[0,6),即a[0,5] | |
增 | vec.push_back(a); | 向vector尾部添加元素a |
vec.insert(pos,elem); | 在pos处插入elem iterator insert(iterator it,const T& x): | |
vec.insert(pos,n,elem); | 在pos处插入n个elem insert(iterator it,int n,const T& x): | |
vec.insert(pos,beg,end); | 在pos处插入[beg, end)区间的所有元素 insert(iterator it,const_iterator first,const_iterator last): | |
删 | vec.pop_back(); | 删除last最后一个元素 |
vec.clear(): | 清空所有元素 | |
vec.erase(v.begin(),v.begin()+3); | 删除[first,last)中元素 erase(iterator first,iterator last): | |
erase(iterator it): | 删除迭代器指向元素 | |
遍历 | vec.begin();地址 | first返回头指针,指向第一个元素 |
vec.end();地址 | last+1,返回尾指针,指向一个不存在元素 | |
vec.front();值 | 返回首元素 | |
vec.back();值 | 返回尾元素 | |
vec.rbegin();地址 | last返回尾指针,指向第一个元素 | |
vec.rend();地址 | first-1,返回首指针之前,指向一个不存在元素 | |
vec.at(int pos); | 返回pos位置元素的引用 | |
大小 | vec.empty(); | 判断是否为空,空true,否则返回false; |
vec.size(); | 获取vector中元素个数 | |
vec.capacity(); | 获取容器分配的存储空间 | |
vec.resize(n+m); | 调整vec的大小变为n+m | |
其他 | 加头文件#include<algorithm> | —— |
sort(vec.begin(),vec.end()); | 对元素排序 | |
reverse(vec.begin(), vec.end()); | 反转容器 | |
swap(vec[i],vec[j]); | 交换元素 |
?
参考示例,见蒲公英110老师的文章。
https://www.cnblogs.com/zsq1993/p/5929806.html
原文:https://www.cnblogs.com/yeyeye123/p/10612032.html