如何删除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) (初级)
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) (初级)
相关文章推荐
- (原創) 如何删除std::vector内的element?(使用find) (C/C++) (STL)
- 如何统计出一篇文章出现的文字个数? (中级) 使用std::vector
- 【C++ STL应用与实现】2: 如何使用std::vector
- (原創) 如何将array转成std::vector? (使用constructor) (C/C++) (STL)
- std::vector如何使用
- (原創) 如何将array转成std::vector? (使用vector.insert) (C/C++) (STL)
- 【C++ STL应用与实现】56: 使用std::unique删除重复元素
- 使用::std::vector作为管理动态数组的优先选择
- C++ STL 遍历 map 的时候如何删除其中的 element
- 使用std::vector 的陷阱
- 如何查看/删除使用WANem或者其它时候的网关设置
- 如何使用无人参与的模式安装和删除基于 Windows Server 2008 的域控制器上的 Active Directory 域服务
- 如何不使用DBCA在Oracle 11中删除数据库
- 如何使用istream_iterator将cin转到vector? (C/C++) (STL)
- ubuntu 14.04.5 第一次使用PostgreSQL如何创建、删除数据库
- (转)如何使用ADOX/DAO刷新/更新/删除并重定义链接表
- 【C++ STL应用与实现】86: 如何使用std::accumulate
- 如何在UltraEdit中使用正则表达式删除空格
- vector如何删除指定索引位置的元素?
- Linux中使用lsof命令如何恢复删除的文件?