操作 功能 适用容器
c.push_back(t) 在容器尾部插入一个元素 所有的顺序容器
c.push_front(t) 在容器c的前端添加值为t的元素,返回void类型 同上
c.insert(p, t) 在迭代器p所指向的元素前面 插入值为t的新元素 只适用于list和deque容器类型
返回指向新添加元素的迭代器
c.insert(p, n, t) 在迭代器p所指向的元素前面 插入n个值为t的信元素 同上
返回void类型
c.insert(p, b, e) 在迭代器p所指向的元素前面 插入有迭代器b和e标记 同上
的范围内的元素 。返回void类型
c.size() 返回容器c中的元素个数,返回类型为c::size_type 所有的顺序容器
c.max_size() 返回容器c可容纳的最多元素个数 ,返回类型c::size_type ..
c.empty() 返回标记容器大小是否为0的布尔值 ..
c.resize(n) 调整容器c的长度大小,使其能容纳n个元素,如果n<c.size(), ..
则删除多出来的元素;否则,添加采用值初始化的新元素
(例如:list<int> ilist(10,42);//10 ints:each has value 42
ilist.resize(18);//adds 8 elements of value 0 to back of ilist)
c.resize(n, t) 调整人容器c的大小,使其能容纳n个元素,所有新添加 ..
的元素值都为t
c.back() 返回容器c的最后一个元素的引用。如果c为空则该操作未定义
c.front() 返回容器c的第一个元素的引用,若为空则此操作未定义
c[n] 返回下标为n的元素的引用,
如果n<0或n>= c.size(),则该操作未定义 只适用于vector和deque容器
c.at(n) 返回下标为n的元素的引用,若下标越界则操作未定义 同上
(注:调用front或back函数前,或在对begin或end返回的迭代器进行解引用运算前,必须保证ilist容器非空
同时如果给出的下标无效,at函数将会抛出out_of_range异常)
c.erase(p) 删除迭代器p所指向的元素,返回一个迭代器,
它指向被删除元素后面的元素。如果p指向容器内的最后一个
元素,则返回的迭代器指向容器的超出末端的下一位置。
如果p本身就是指向超出末端的下一位置的迭代器
则该函数未定义。
c.erase(b,e) 删除迭代器b和e所标记范围内所有的元素
返回一个迭代器,他指向被删除元素段后面的元素。
如果e本身就是指向超出末端的下一位置的迭代器,则
返回的迭代器也指向超出容器末端的下一位置
c.clear() 删除容器c内的所有元素。返回void
c.pop_back() 删除容器c的最后一个元素。返回void。
如果c为空容器,则该函数未定义
c.pop_front() 删除容器c的第一个元素。返回void。 只用于list和deque容器
如果c为空容器,则该函数未定义
c1 = c2 删除容器c1的多有元素,然后将c2的元素复制给c1。
c1和c2的类型(包括容器类型和元素类型)必须相同
c1.swap(c2) 交换内容:调用完该函数后,c1中存放的是c2原来的
元素,c2中存放的则是c1原来的元素。
c1和c2的类型必须相同。该函数的执行速度通常要比
将c2的元素复制到c1的操作快
c.assgin(b,e) 重新设置c的元素:将迭代器b和e标记的范围内所有的
元素复制到c中。b和e必须不是指向c中元素的迭代器
c.assign(n, t) 将容器c重新设置为存储n个值为t的元素
(注:迭代器可以指向超出末端的下一位置,这是一个不存在的元素,因此insert函数是在其指向位置之前而非其后插入元素)
注意:
1、insert(p, t)这一版本的函数,其返回指向新插入元素的迭代器,可使用该返回值在容器中的指定位置重复插入元素
例如:list<string> lst;
list<string>::iterator iter= lst.begin();
while(cin>>word)
iter = lst.insert(iter, word);//起功能等效于调用push_front函数
2、存储end操作返回的迭代器有时会导致灾难性错误:
例如
:
该段代码即将导致死循环。
原因:由于在循环体中的太添加运算导致了存储在last中的迭代器失效
解决方案:
在每次做完插入运算后重新计算end迭代器的值:
例如://recalculate end on each trip whenever the loop adds/erases elements
while(first != v.end()){
first = v.insert(first, 42);
++first;
}