STL vector里的segmentation error问题。
时间:2011-11-28
来源:互联网
这个程序,11行那里,如果n=3,就有Segmentation Error,n=4, n=2 等等其他数都没有问题。
怎么回事啊?(编译器linux下 gcc 4.4.5 )
C/C++ code
怎么回事啊?(编译器linux下 gcc 4.4.5 )
C/C++ code
#include <iostream> #include <vector> using namespace std; int main () { int i, n; vector<int> myvector; for (i=1; i<=10; i++) myvector.push_back(i); vector<int>::iterator iter; n = 4; for (iter=myvector.begin(); iter<myvector.end(); iter++) { if (*iter%n == 0) myvector.push_back(999); } return 0; }
作者: byres 发布时间: 2011-11-28
因为push_back会导致迭代器失效,所以每次的iter你都需要重新获得,当然最好的办法是通过下标。而不通过迭代器。
作者: pengzhixi 发布时间: 2011-11-28
看下来震惊了两次:
看到迭代器比较你用小于符号..
在原来的容器里push_back..
看到迭代器比较你用小于符号..
在原来的容器里push_back..

作者: hastings 发布时间: 2011-11-28
C/C++ code
int main () { int i, n; vector<int> myvector; for (i=1; i<=10; i++) myvector.push_back(i); vector<int>::iterator iter; n = 3; for (int i=0;i!=10;++i) { if (myvector[i]%n == 0) myvector.push_back(999); } system("pause"); return 0; }注意不能写成i<myvector.size();否则 随着push_back其大小不断增大就会变成死循环直到内存爆了。
作者: pengzhixi 发布时间: 2011-11-28
该回复于2011-11-28 14:39:27被管理员删除
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
|
#5楼 得分:0回复于:2011-11-28 14:59:25
|
作者: tony2278 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28