2015北京网赛的那个模拟题让我深感自己list的各种用法各种不熟。。。这回总结一下,在那题里我用到的几个知识
- 先定义一些几个变量,为后面例子使用
list<int> l1,l2;
list<int>::iterator it = l1.begin();
- 迭代器重载了++,–,==,不能比较大小
- insert: 插入函数,插入到迭代器前,对迭代器没有任何影响,该指哪还指哪
//在it前插入1个元素
l1.insert(it,1);
//用l2的一部分(按左开右闭)插入到l1中
l2.insert(++l1.begin(),l2.begin(),l2.end());
- erase:删除函数,迭代器被删后失效,所以很多时候需要用个tmp迭代器来辅助一下
//删除迭代器位置上的元素
l1.erase(it);
//删除一个区间上的元素,左开右闭
l1.erase(it,l1.end());
- 迭代器重载的” * “运算符:可以用来访问内容,也可以用来修改内容
*it = *l2.begin();