【STL】顺序容器之vector用法总结

本文深入探讨了C++ STL中的vector容器,详细介绍了其基本原理、用法、时间复杂度及注意事项,包括内存管理和性能影响。讨论了如何初始化、访问、遍历、添加与删除元素,以及迭代器的管理。特别强调了数组越界和迭代器失效的风险,并给出了最佳实践建议。
摘要由CSDN通过智能技术生成

       

一、基本原理

        vector内部使用动态数组的方式实现的,这个数组的元素可以是基本数据类型(如int、char、double等),也可以是类类型(如C++容器库里的string,或者你自定义的类)的。

        初始化时,vector会申请比当前要容纳元素所需的内存更大一块的连续内存,预留出空闲空间,用于之后存放新添加的元素,这样就不需要每添加一个新元素就重新分配整个容器的内存空间。当不断向数组内添加元素时,如果数组的内存不够了,就要重新申请一块内存,一般是当前大小的两倍,然后把原数组的内容拷贝过去。

        vector和普通数组一样都支持随机访问,但当在数组中头部或者中间添加或删除元素时,都要移动数组元素,如果频繁地进行这样的操作,会导致vector性能降低。

       vector的一个特点:内存空间只会增长,不会减小。除非你用vector中的shrink_to_fit()函数来人为地减小预分配空间,但是调用shrink_to_fit()也并不保证一定退回内存空间。

       

       

       

二、用法

       以下都以容器vector中的元素为int为例,若要保存其他类型的元素,将int换成其他类型即可。
       

初始化

创建一维数组的方法 vector<类型名>    数组名;
vector<int>   v1; 创建一个名为v1的空数组,v1中的元素类型为int
vector<int>   v1(100,7); v1中的元素为100个7
vector<int>   v1{1,2,3,……}; 元素为1,2,3,……的v1
vector<int>   v2(v1); 数组v2中包含和数组v1一样的元素
vector<int>   v2=v1; 数组v2中包含和数组v1一样的元素
创建二维数组 vector<vector<类型名> >    数组名;
vector<vector<int>>   v1; 创建一个名为v1的空数组,v1中的元素类型为vector<int>
vector<vector<int>>   v1(5,vector<int> (100,7); 创建一个5行100列的二维数组 ,数字中的元素都为7
vector<vector<int>>   v1{ {1,2} ,{3,4,5,6,7} }; 第一行元素为1,2,第二行元素为3,4,5,6,7的数组v1

       

访问元素

访问元素
v1[n] 访问下标为n的那个元素
v1.at(n); 访问下标为n的那个元素
v1.front(); 访问v1的首元素
v1.back(); 访问v1的尾元素
*iter 访问迭代器iter指向的元素
获取迭代器
v1.begin(); 获取指向v1首元素的迭代器
v1.end(); 获取指向v1尾元素的后一个位置的迭代器
v1.rbegin();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值