STL vector里的segmentation error问题。
这个程序,11行那里,如果n=3,就有Segmentation Error,n=4, n=2 等等其他数都没有问题。
怎么回事啊?(编译器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;}[解决办法]
可能会引起内存的重新分配(当原来的内存不足以存放下新添加的元素时候)那么原来的iter肯定会失效。而且即使你的迭代器不失效,那么你的iter可能永远也到不了myvector.end(); 因为随着你不停的push_back那么元素也不停的增多。可能永远无法到达myvector.end()
[解决办法]
vector一般是2的幂次增长,push_back如果原来分配的内存不够就会重新分配,这个时候迭代器(也就是指针)就失效了