C++ vector动态数组

#include<vector>头文件

vector类称作向量类

 

我喜欢把知识点拿出来实际操作。

提纲挈领的总结实际工程中用到的方式方法,最后列表展示出来,补充一些常用实际案例,最直接。

既方便看,又方便提取。

 

之前不了解动态数组vector的事,感觉像一座大山,没有办法迈过去。可是当深入的了解并使用到它的时候,觉得他真的是太便捷了。

比如说一般的数组a,一旦我们定义好了,就不能对里面的排序进行随意的增删改(或者说增删改的代价太大)

1.因为数组a在创建的时候,系统自动给它分配了一段固定长度内存,无法重定义数组的大小。

2.值写进去可以被抹掉,但那一段内存始终被占用着,无法实现「值没了,后1位变量前进一格」。

3.数组a可以被声明为空,如a[],但是在末尾添加数值还是很局限。而动态数组vec可以实现任意类型的push_back

……

我目前探索到的动态数组vecvec内变量个数可变,可随意插入,可随你删除,数组尾部添加动态变量很便利

总之,很赞。

 

很初级的操作:

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");

初始化为n3

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处插入nelem

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

猜你喜欢

转载自www.cnblogs.com/yeyeye123/p/10612032.html