#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位上编译时 它有这个分段错误,有人启发吗?
答案 0 :(得分:3)
从您显示的代码中,vector[i+1].c_str()
将在vector
的末尾读取循环的最后一次迭代。
你应该尽快退出循环吗?
for(int i=0; i<vector.size()-1;i++)
如果这没有用,你能发布一个更全面的例子来证明这个问题吗?目前还不能说是否例如vector2
具有足够的容量,或vector
的内容始终可转换为合适的索引。