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的主要内容,如果未能解决你的问题,请参考以下文章

STL之vector

c++ 容器含义

STL之vector3

c++ stl里的向量vector非常好用,那么它是怎么实现的呢

STL之vector4

STL之vector