c++ vector容器总结

时间:2023-01-08 18:56:06

vector

1.动态扩展:

并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间。(一般会找比预料更多的空间)

c++ vector容器总结

2.vector容器构造
1.构造

vector ​​<int> c1;​

通过区间方式进行构造

vector<int>c2(c1.begin(), c1.end());

n个elem的方式进行构造

vector<int>c3(10, 100); //10个100

拷贝构造

vector<int>c4(c3);

2.vector对象中元素的遍历输出:
void print(vector<int> &c)
{
for(vector<int> :: iterator it = c.begin();it != c.end();it ++)
{
cout<<*it<<" ";

}
cout<<"endl";

}
3.赋值操作

c++ vector容器总结

等号赋值
vector<int> c1;
vector<int> c2;
c2 = c1;

//assign
vector<int> c3;
c3.assign(c1.begin(), c1.end());

//n 个elem的方式
vector<int> c4;
c4.assign(10, 100); //10个100
4.vector容量和大小

c++ vector容器总结

容量永远大于等于元素个数

c.resize(15);//原来如果只有10个元素的话,会在末尾自动加5个 0 ;

c.resize(15, 100);//可以自己设定默认的填充值,此时会在后面补充5个100

5.vector的插入和删除

c++ vector容器总结

//插入 第一个参数是迭代器
v1.insert(v1.begin(), 100); //第一个元素变成了100

//插入n个elem元素
v1.insert(v1.begin(), 5, 100); //前五个元素变成了100

//删除 参数也是迭代器
v1.erase(v1.begin()); //删除第一个元素

//区间删除
v1.erase(v1.begin(), v1.end()); //删除所有元素
//等价于:
v1.clear();
6.vector数据存取

c++ vector容器总结

7.vector互换容器

c++ vector容器总结

v1.swap(v2);  //v1与v2内容互换

//实际用途
//巧用swap可以收缩内存空间

//当vector中元素个数非常大时,vector自动扩增的容量也会随之变大 100000 138900
//当使用resize重置元素个数时,resize并不会改变原有的容量,只会改变原有的大小 3 138900
//:
vector<int>(v).swap(v); //此时大小和容量分别为: 3 3

c++ vector容器总结

8.vector预留空间

c++ vector容器总结

对于大数据量的容器来说,比如100000个数据,它会使用30次动态内存的拓展,容器存数据是重新开辟一个空间~

此时的解决办法是:

在存数据之前,使用:

v.reserve(100000);  //此时仅仅使用1次动态内存的拓展