您的位置:首页 > 运维架构

如何删除std::vector内的element?(使用for loop) (中级)

2006-11-15 14:27 417 查看
初学者若想要删除std::vector内的element,第一个想到的就是用for loop,若该iterator的值是我要删的,就erase

1// Compile OK, but run-time error!!
2#include <iostream>
10#include <vector>
11
12#include <iostream>
10#include <list>
11
12int main() {
13
14 std::list<int> ilist;
15 for(int i = 0; i != 10; ++i) {
16 ilist.push_back(i);
17 }
18
19 // Compile OK, but run-time error!!
20 //for(std::list<int>::iterator iter = ilist.begin();
21 // iter != ilist.end(); ++iter) {
22 // if (*iter == 8) {
23 // ilist.erase(iter);
24 // }
25 //}
26
27 for(std::list<int>::iterator iter = ilist.begin();
28 iter != ilist.end(); ++iter) {
29 if (*iter == 8) {
30 --(iter = ilist.erase(iter));
31 }
32 }
33
34 // cout the result
35 for(std::list<int>::const_iterator iter = ilist.begin();
36 iter != ilist.end(); ++iter) {
37
38 std::cout << *iter << std::endl;
39 }
40
41 return 0;
42}

其实这并不是建议的方式,只是demo若还是要用for loop写,该怎么改成可以执行的程序,但可以发现程序相当的『丑』,修修补补的痕迹非常明显,正规的作法该用find()这个generic algorithm找到要删除的iterator后,直接删除,请参阅如何删除std::vector内的element?(使用find) (初级)

See Also
如何删除std::vector内的element?(使用find) (初级)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: