-2
Была попытка выяснить, почему я не могу заставить 2d-векторы нормально работать. Пробовал это, и он работает, только если я инициализирую вектор векторов как локальную переменную. В противном случае я получаю ошибку вне диапазона.Вектор вне диапазона инициализация C++
vector <string> allSymbols;
std::vector<std::vector<bool>> wholeMap(allSymbols.size(), std::vector<bool>(allTerms.size() + 2));
void fillWholeMap()
{
cout << allSymbols.size() << endl;
cout << allTerms.size() << endl;
for (int i = 0; i < allSymbols.size(); i++)
{
for (int j = 0; j < allTerms.size() + 2; j++)
{
wholeMap[i][j]=false;
}
}
}
Я понятия не имею, чего вы ожидаете от своей второй строки кода. Возможно, вы можете описать свою цель более высокого уровня. Вам нужна 2D-матрица булевых флагов? Возможно, используйте существующий матричный класс или сверните свой собственный простой с чистым интерфейсом. – 5gon12eder
Пожалуйста, в целом [mcve] (http://stackoverflow.com/help/mcve). Убедитесь, что вы инициализируете 'wholeMap' ** после ** вы заполнили' allSymbols' и 'allTerms'. Альтернативой является инициализация 'wholeMap' с размером 0 и использование метода' vector :: push_back() 'для динамического добавления. – tofi9
Извините, да, я пытаюсь создать вектор 2d, который является всеми булевыми флагами. У меня возникли проблемы с инициализацией 2d-вектора. Я сначала инициализирую другие два, и я попробовал вектор :: push_back(). Вторая строка кода - это моя попытка создать вектор вектора с внутренними элементами bools. Предполагается, что этот вектор векторов имеет размер I. Тем не менее, я нахожу, что он не оставляет места. – robo