erase迭代器不仅使所指向被删除的迭代器失效,而且使被删元素之后的所有迭代器失效(list除外),所以不能使用erase(it++)的方式,但是erase的返回值是下一个有效迭代器; It = c.erase(it); 2)关联容器 erase迭代器只是被删除元素的迭代器失效,但是返回值是void,所以要采用erase(it++)的方式删除迭代器; c.erase(...
原型:iterator erase ( iterator position ); iterator erase ( iterator first, iterator last ); 功能:清除链表中position处或者[first,last)范围内的元素。会减少list的size值。 返回值:清除的最后一个元素的下一个位置(迭代器) 5、swap 原型:void swap ( list<T,Allocator>& lst) 功能:将两个lsit交换 ...
2.对于关联容器map,set来说,适用了erase(itertor)后,当前元素的迭代器失效,但是其结构是红黑树,删除当前元素的,不会影响到下一个元素的迭代器,所以在调用erase之前,记录下一个元素的迭代器即可。 3.对于list来说,它使用了不连续分配的内存,并且它的erase方法也会返回下一个有效的itertor,因此上面两种正确的方法...
assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删除一个元素 front() 返回第一个元素 get_allocator() 返回list的配置器 insert() 插入一个元素到list中 max_size() 返回li...
1. 去除一个容器中有特定值的所有对象: 1)如果容器是vector、string或deque,使用erase-remove惯用法。 c.erase(remove(c.begin(),c.end(),2012),c.end()); 1. 2)如果容器是list,使用list::remove。 c.remove(2012); 1. 3)如果容器是标准关联容器,使用它的erase成员函数。
(1)序列式容器(Sequence containers),每个元素都有固定位置--取决于插入时机和地点,和元素值无关,vector、deque、list; Vector:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时; Deque:是“double-ended queue”的缩写,可以随...
{25list<MyClass*>::iterator p =26find(instances_.begin(), instances_.end(),this);27if(p !=instances_.end())28instances_.erase(p);29}3031voidMyClass::showList() {32for(list<MyClass*>::iterator p =instances_.begin();33p != instances_.end(); ++p)34cout << (*p)->value_ <...
要删除容器中指定值的所有对象: 如果容器是vector、string或deque,则使用erase-remove习惯用法。 SeqContainer<int> c; c.erase(remove(c.begin(),c.end(),1963),c.end()); 如果容器是list,则使用list::remove。 如果容器是一个标准关联容器,则使用它的erase成员函数。 要删除容器中满足特定条件的所有对象:...