C++学习笔记之erase
来源:互联网 发布:明道办公软件登陆 编辑:程序博客网 时间:2024/06/02 04:35
今天编写《C++primer》的习题9.26的小程序,主要是对erase的使用。先贴上代码。
#include <iostream>#include <vector>#include <list>using namespace std;int main(){ int a[] = {0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 }; size_t a_size = sizeof(a)/sizeof(int); vector<int> vec(a, a + a_size); list<int> lis(a, a + a_size); cout << "The original integers are: "; for(size_t i =0; i != a_size; ++i) cout << a[i] << " "; cout << endl; //erase operation on Vector for(vector<int>::iterator iter = vec.begin(); iter != vec.end(); ++iter) if(*iter%2 != 0) iter = --vec.erase(iter); cout << "Vector is: "; for(vector<int>::iterator iter = vec.begin(); iter != vec.end(); ++iter) cout << *iter << " "; cout << endl; //erase Operation on List for(list<int>::iterator iter = lis.begin(); iter != lis.end(); ++iter) if(*iter%2 == 0) iter = --lis.erase(iter); cout << "List is: "; for(list<int>::iterator iter = lis.begin(); iter != lis.end(); ++iter) cout << *iter << " "; cout << endl; return 0; }
开始忽略了我使用erase时候地迭代器会失效,于是在for循环里面直接直接写了erase(iter)
,结果可想而知了。erase删除容器的一个元素以后会返回之指向已删除元素的下一个元素的迭代器,因此为了能够完整遍历整个容器,就将返回的迭代器减1以后重新赋给iter,这样iter会保持有效。
erase还有另外一种形式c.erase(b,e)
删除两个迭代器之间的元素,返回指向被删除元素段的后一个元素的迭代器。 c.pop_back()
和 c.pop_front()
分别删除容器 c 的最后一个和第一个元素
另外需要注意:
1. vector中的迭代器可以进行加减运算,但是 list 中的迭代器不可以。因此在在以后的编写程序过程中尽量用++
和 --
。
2. vector中没有c.push_front()
和c.pop_front()
函数。
0 0
- C++学习笔记之erase
- 【C++】vector容器和list容器中使用单个迭代器的erase函数学习笔记
- C++primer学习-vector中的erase函数
- C++primer学习-list中的erase函数
- vector的erase用法--学习笔记
- 学习笔记之c
- C++学习笔记—unique及erase的联合运用
- C学习笔记之scanf
- 学习笔记:指针之C
- IOS 学习笔记之C
- C学习笔记之函数
- c++学习之容器——erase()函数
- C++学习之erase()与insert()
- C++STL:erase
- TypeList 之 Erase
- STL之erase
- map之erase
- STL之erase,remove
- 创建UIWebView
- JVM - 体系结构 内存模型
- BaseHTTPServer构建基本服务器
- 算法竞赛入门经典第五章
- Android Touch事件传递机制通俗讲解
- C++学习笔记之erase
- 个人使用的Android Studio快捷键(MAC版)
- 黑马程序员——Java中多线程技术
- MySQL索引背后的数据结构及算法原理
- UVALive 5815 Pair of Touching Circles
- 读取jar包中资源文件的两种方法
- MySQL jdbc增删改查
- 【图论,树上路径倍增算法】NOIP2013货车运输
- 005求一个字符串中出现相同且长度最长的字符串,输出它及其首字符位置