STL——vector
Posted yangxinrui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL——vector相关的知识,希望对你有一定的参考价值。
1.重要概念
该标准容器时定义在namespace std中的模板,该模板的原型声明在头文件<vector>中。它的数据结构像一个数组,所以与其他的容器相比,vector更能非常方便和高效的访问单个元素。因此在vector中提供了随机访问迭代器。
2.操作
(1)构造一个vector
vector<int> intvec; //构造一个空vector vector<int> intvec(othervect); //使用通类型othervec拷贝构造 vector<int> intvec(size); // 构造一个有size个元素的vector,元素的值为默认构造函数赋的值 vector<int> intvec(size, elem); // 构造有size个元素并且元素初始值为elem vector<int> intvec(begin, end); // 构造一个有迭代器begin到end-1之间的元素的vector
(2)访问
使用迭代器访问。
vector 类中声明了 typedef iterator,类似于指向元素的指针。
for (intiter = intvec.begin(); intiter != intvec.end();intiter++) cout<<*intvec<<" ";
使用向量访问
注意:向量访问时不会自动检测释放越界。越界是相对于 capacity而非 size
intvec.at(index); intvec[index]; intvec.front(); //返回第一个元素 intvec.back(); //返回最后一个元素
(3)大小
vector有两个大小相关属性:size capacity
intvec.capacity(); // 返回capacity intvec.empty(); // 检查size是否等于0 intvec.size(); // 返回 size intvec.max_size(); // 返回可用的最大空间 intvec.resize(num); // 修改 size intvec.resize(num, elem); // 修改 size, 新增加的元素赋值为elem intvec.reserve(num) ; // 改变capacity
此外,如果 size == capacity ,再进行 push_back, 也会导致 size 和 capacity 增加
(4)操作元素
注意下面的 position 和 beg ,end 都为 通类型迭代器
intvec.clear(); // 将 size = 0 intvec.erase(position); // 注意 position 是 相同类型的迭代器 intvec.erase(begin, end); // 删除 begin 到 end-1 的元素 intvec.insert(position, elem); intvec.insert(position, n, elem); // 将 n 个值为 elem的元素插入 position intvet.insert(position, beg, end); // 将 beg 到 end-1 的元素插入position intvec.push_back(elem); // 末尾插入 intvec.pop_back(); // 删除最后元素
以上是关于STL——vector的主要内容,如果未能解决你的问题,请参考以下文章