vector学习笔记

来源:互联网 发布:设置斐讯k1路由器mac 编辑:程序博客网 时间:2024/05/21 22:21

一、vector的能力

vector将其元素复制到内部的dynamic array中。元素之间总是存在着某种顺序。所以vector是一

种有序群集,vector支持随机存取,因此只要知道位置,你可以在常数时间内存取任何一个元素。

vector的迭代器是随机存取迭代器,对任何一个STL算法都可以奏效。

二、vector的函数操作

1vector的构造函数和析构函数

vector<Elem> c;产生一个空vector,其中没有任何元素

vector<Elem> c1(c2);产生另一个同型vector的副本(所有元素都被拷贝)

vector<Elem> cn);利用元素的default构造函数生成一个大小为nvector

vector<Elem> cnelem);产生一个大小为nvector,每个元素都是elem

vector<Elem> cbegend);产生一个vector,以区间[beg,end]作为元素的初值

c.~vector<Elem>();销毁所有元素,并释放内存

2vector的非变动性操作

c.size();返回当前的元素数量

c.empty();判断大小是否为0

c.max_size();返回可容纳的元素最大数量

capacity();返回重新分配空间前所能容纳的元素最大数量

reserve();如果容量不足,扩大之

c1==c2;

c1!=c2;

c1<c2;

c1>c2;

c1<=c2;

c1>=c2;判断c1c2的大小关系

3vector的赋值操作

c1=c2;c2的全部元素赋值给c1

c.assign(n,elem);赋值nelemc

c.assign(beg,end);将区间[beg,end]的元素赋值给c

c1.swap(c2);c1c2的元素互换

swapc1c2);同上

4、直接用来存取vector元素的各项操作

c.at(idx);返回索引idx所标示的元素,如果idx越界,抛出out_of_range

c[idx];返回索引idx所标示的元素,不进行范围检查

c.front();返回第一个元素,不检查第一个元素是否存在

c.back();返回最后一个元素,不检查最后一个元素是否存在

5vector迭代器的相关函数

c.begin();返回一个随机存取迭代器,指向第一元素

c.end();返回一个随机存取迭代器,指向最后一个元素的下一个位置

c.rbegin();返回一个逆向迭代器,指向逆向迭代的第一个元素

c.rend();返回一个逆向迭代器,指向逆向迭代的最后元素的下一个位置

6vector的安装、移出相关操作

c.insert(pos,elem);pos位置插入一个elem副本,并返回新元素位置

c.insert(pos,n,elem);pos位置插入nelem元素副本,无返回值

c.insert(pos,beg,end);pos位置插入[beg,end]内所有元素的副本,无返回值

c.push_back(elem);在尾部添加一个elem副本

c.pop_back();移出最后一个元素(但不回传)

c.erase(pos);移出pos位置上的元素,返回下一元素的位置

c.erase(beg,end);移出[beg,end]区间内的所有元素,返回下一元素的位置

c.resize(num);将元素数量改为num(如果size()变大了,多出来的新元素都需以default构造函数构造完成)

c.resize(num,elem);将元素数量改为num(如果size()变大了,多出来的新元素都是elem的副本)

c.clear();移出所有元素,将容器清空

三、class vector<bool>

vector<bool>的特殊操作

c.flip();将所有bool元素取反值,亦即求补码

m[idx].flip();将索引idxbit元素取反值

m[idx]=val;令索引idxbit元素值为val(指定单一bit

m[idx1]=m[idx2];令索引idx1bit元素为索引idx2bit元素的值

原创粉丝点击