-4
#include <stdlib.h>
#include <stdio.h>  

vector <vector<string> > vector2;
vector<string> vector;

for(int i = 0; i < vector.size();i++)
{
    vector2[atoi(vector[i+1].c_str())].push_back(vector[i]);
    i++;
}

我在 Windows 上尝试了这个,它工作正常。但是当我尝试在 ubuntu64 位上编译时,它有这个分段错误,有人能启发吗?

4

1 回答 1

3

从您显示的代码中,将在循环的最后一次迭代vector[i+1].c_str()结束后读取。vector

您是否应该尽快退出循环一次迭代?

for(int i=0; i<vector.size()-1;i++)

如果这没有帮助,您能否发布一个更完整的示例来演示该问题?目前还不能说 eg 是否vector2有足够的容量或者vector's 的内容总是可以转换成合适的索引。

于 2013-08-13T06:51:12.613 回答