STL之vector函数详解

构造函数&析构函数

Vector的构造函数和析构函数
vector<Elem> c产生一个空vector,其中没有任何元素
vector<Elem> c1(c2)产生另一个同型vector的副本(所有的元素都被拷贝)
vector<Elem> c(n)利用元素的default构造函数产生一个大小为n的vector
vector<Elem> c(n,elem)产生一个大小为n的vector,每个元素值都是elem
vector<Elem> c(beg, end)产生一个vector,以区间[beg, end)做为元素初值
c.~vector<Elem>()销毁所有元素,并释放内存

非变动性操作

Vector的非变动性操作
c.size()返回容器的大小
c.empty()判断容器是否为空,等价于size()==0,但可能更快
c.max_size()返回容器最大的可以存储的元素
c.capacity()返回重新分配空间前所能容纳的元素最大数量
reserve()如果容量不足,扩大之
c1 == c2判断c1 是否等于c2
c1 != c2判断c1是否不等于c2
c1 < c2判断c1 是否小于c2
c1 > c2判断c1 是否大于c2
c1 <= c2判断c1是否小于等于c2
c1 >= c2判断c1是否大于等于c2

赋值操作

Vectors的赋值操作
c1 = c2将c2的全部元素赋值给c1
c.assign(n, elem)复制n个elem,复制给c
c.assign(beg, end)将区间[beg;end)内的元素赋值给c
c1.swap(c2)将c1和c2元素互换
swap(c1,c2)同上,此为全局函数

直接存取操作

直接存取vectors元素的各项操作
c.at(idx)返回索引idx标示的元素,如果idx越界,抛出异常
c[idx]返回索引idx标示的元素,不进行范围检查
c.front()返回第一个元素。不检查第一个元素是否存在
c.back()返回最后一个元素。不检查最后一个元素是否存在
备注:除了at()函数,其他函数发生越界,会引发未定义行为

安插&移除操作

Vector的安插、移除相关操作
c.insert(pos,elem)在pos位置上插入一个elem副本,并返回新元素位置
c.insert(pos,n,elem)在pos位置上插入n个elem副本,无返回值
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()移除所有元素,将容器清空
备注:安插和移除元素,都会使“作用点”之后的各个元素的iterator等失效,若发生内存重新分配,该容器身上的所有iterator等都会失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值