C++vector的使用

1. 简介

C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库( STL, Standard Template Library)的一部分, 是能够操作多种数据结构和算法的模板类和函数库.

2. 基本操作

#include<vector> // 头文件

vector<int> vec; // 创建vector类
cout<<vec[0]<<endl; // 使用下标访问元素

/* 使用迭代器访问元素 */
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
    cout<<*it<<endl;   

vec.insert(vec.begin()+i,a); // 在第i+1个元素前面插入a
vec.erase(vec.begin()+2); // 删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j); // 删除区间[i,j-1];区间从0开始
vec.push_back(5); // 在最后插入数值5
vec.pop_back(5); // 删除最后一个元素
vec.size(); // 向量大小
vec.empty(); // 判断是否为空
vec.clear();  // 清空

3. 注意

3.1 vector 的元素不止可以是 int, float, double 也可以是结构体, Note 结构体需要定义为全局变量;
3.2 Vector作为函数的参数或者返回值时,需要注意它的写法:
double Distance(vector<int>&a, vector<int>&b) // 其中引用标识符 & 绝对不能少

4. 使用STL中的算法

4.1 元素翻转
#include<algorithm>
reverse(vec.begin(),vec.end());//将元素翻转,即逆序排列!
4.2 排序
#include<algorithm>
sort(vec.begin(),vec.end());//默认是按升序排列,即从小到大
4.3 复制
#include<algorithm>
copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素
4.4 查找
#include<algorithm>
find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置

5. vector 的内存释放

类似数组,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储. vector 内存只增不减,在析构的时候被回收, 虽然 clear() 函数可以清空所有元素, 但是依旧占用空间.
vector 中的内建有内存管理,当 vector 离开它的生存期的时候,它的析构函数会把 vector 中的元素销毁,并释放它们所占用的空间,所以用 vector 一般不用显式释放 ——不过,如果你 vector 中存放的是指针,那么当 vector 销毁时,那些指针指向的对象不会被销毁,那些内存不会被释放.
利用swap() 函数清理内存:

vector<tempObject>().swap(tempVector);  // 创建一个没有被分配内存的 vector 用想要被清除内存的 vector 和它交换

参考资料:

C++vector的使用总结及常用vector操作
C++ 中vector的使用方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值