list 的问题,求.........
时间:2011-12-02
来源:互联网
C/C++ code
list<int> lst; lst.push_back(1); for (list<int>::iterator it = lst.begin();it!=lst.end();++it) { list<int>::iterator itemp = it; --it; lst.erase(itemp); }
作者: hlyces 发布时间: 2011-12-02
作为迭代器变量的it是不能为负值的,如果初始=lst.begin(),--it,就会变成负值,故出错
作者: nuaazdh 发布时间: 2011-12-02
删除元素的定式写法:
C/C++ code
C/C++ code
for (list<int>::iterator it = lst.begin();it!=lst.end();/*++it*/) { if(删除元素的条件满足) { it = lst.erase(it); } else { ++it; } }
作者: pathuang68 发布时间: 2011-12-02
楼主想表达什么啊?++it
——it
感觉好乱啊!
——it
感觉好乱啊!
作者: wallwind 发布时间: 2011-12-02
C/C++ code
list内部是链表的机制,如果开始指向头结点,你--操作之后他就不知道指向哪里了,然后你删掉再++他就不是指向第二个元素
#include <list> #include <iostream> using namespace std; int main() { list<int> lst; lst.push_back(1); lst.push_back(1); lst.push_back(1); lst.push_back(1); lst.push_back(1); list<int>::iterator it1 = lst.begin(), it2 = lst.end(); for (;it1 != it2;) { list<int>::iterator temp = it1; it1++; lst.erase(temp); } cout << lst.size() << endl; return 0; }
list内部是链表的机制,如果开始指向头结点,你--操作之后他就不知道指向哪里了,然后你删掉再++他就不是指向第二个元素
作者: qscool1987 发布时间: 2011-12-02
难道你用的是传说中的vc6.0?
怎么会不报错呢?
怎么会不报错呢?
作者: mingliang1212 发布时间: 2011-12-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28