C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
2013-01-23 13:55
1206 查看
序列性容器::(vector和list和deque)
erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被
删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方
式,但是erase的返回值为下一个有效的迭代器,所以
正确方法为::
for( iter = c.begin(); iter != c.end();
)
iter = c.erase(iter);
关联性容器::(map和set比较常用)
erase迭代器只是被删元素的迭代器失效,但是返回值为void,
所以要采用erase(iter++)的方式删除迭代器,
正确方法为::
for( iter = c.begin(); iter != c.end();
)
c.erase(iter++);
Tips:
其实对于list两种方式都可以正常工作
erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被
删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方
式,但是erase的返回值为下一个有效的迭代器,所以
正确方法为::
for( iter = c.begin(); iter != c.end();
)
iter = c.erase(iter);
关联性容器::(map和set比较常用)
erase迭代器只是被删元素的迭代器失效,但是返回值为void,
所以要采用erase(iter++)的方式删除迭代器,
正确方法为::
for( iter = c.begin(); iter != c.end();
)
c.erase(iter++);
Tips:
其实对于list两种方式都可以正常工作
相关文章推荐
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用
- map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用
- map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用
- map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用
- map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用
- map等关联容器 vector等序列容器 如何防止迭代器失效
- map等关联容器 vector等序列容器 如何防止迭代器失效
- map等关联容器 vector等序列容器 如何防止迭代器失效
- map等关联容器 vector等序列容器 如何防止迭代器失效
- C++ STL容器的使用方法(vector、queue、list、set、map)
- C++ STL基本容器的使用(vector、list、deque、map、stack、queue)
- STL中的容器使用比较(string vector list deque set map)
- C++ STL容器的学习使用(vector、queue、list、set、map)
- stl容器区别(内存布局和使用场合): vector list deque set map
- C/C++--STL中list,vector,deque,map,set区别、联系和使用场景
- C/C++--STL中list,vector,deque,map,set区别、联系和使用场景
- STL中list,vector,deque,map,set区别、联系和使用场景原理