Ошибка сегментации преобразования atoi, работающая на окнах, но не в Ubuntu

#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

Решение

Из кода, который вы показали, vector[i+1].c_str() будет читать после конца vector для последней итерации цикла.

Вы должны выйти из цикла на одну итерацию раньше?

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

Если это не поможет, вы можете опубликовать более полный пример, демонстрирующий проблему? В настоящее время невозможно сказать, например, vector2 имеет достаточную емкость или vectorСодержимое всегда будет конвертироваться в подходящие индексы.

3

Другие решения

Других решений пока нет …