assertion failure 迭代器自加

来源:互联网 发布:windows安装python2.7 编辑:程序博客网 时间:2024/06/14 15:17

如果一个迭代器一开始就指向尾后,比如一个空容器的 begin迭代器(根据 primer ,可以用 begin 和 end 是否相等来判断容器是否为空),那么此时自增迭代器将引发错误:

#include <iostream>#include <list>using namespace std;list<char> t;int main() {list<char>::iterator it = t.begin();//由迭代器的特点,此时begin和end迭代器是相等的++it;return 0;}/*Expression: list iterator not incrementableFor information on how your program can cause an assertionfailure, see the Visual C++ documentation on asserts.(Press Retry to debug the application)Laboratory.exe 已触发了一个断点。*/

如果使用 STL 的 list 从尾端顺序插入,可以使用以下组合:

#include <iostream>#include <list>using namespace std;list<int> test;int num[] = { 1,2,3,4,5,6 };int main() {list<int>::iterator it = test.begin();for (int a : num) {it = test.insert(it, a);          //去掉会出现同样的错误++it;  //自增}return 0;}


阅读全文
0 0
原创粉丝点击