Распределение памяти для многомерного std :: vector (C ++) - PullRequest
0 голосов
/ 30 января 2012

Позвольте нам иметь

std::vector <std::vector <int>> myVec;
myVec.resize(100);
myVec[0].push_back(1);
myVec[0].push_back(2);

Когда я разбиваю программу с точкой останова, я вижу, что размер и емкость каждого myVec [] равна нулю. Кроме того, когда я пытаюсь получить доступ к myVec[0][0], выдается ошибка нарушения доступа . Как это может быть?

P.S .: Я использую VS 10

1 Ответ

1 голос
/ 30 января 2012

Ваш фрагмент кода, кажется, совершенно правильно.Если у вас есть проблемы с нарушением доступа , ваша проблема в другом месте.

Вот пример:

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
    vector<vector<int>> myVec;
    myVec.resize(100); // inserts 100 empty vectors into myVec
    myVec[0].push_back(1);
    myVec[0].push_back(2);
    cout << myVec[0][0] << ' ' << myVec[0][1] << endl;
    myVec[99].push_back(3);
    cout << myVec[99][0] << endl;
    return 0;
}

output:

1 2
3

Если кого-то смущает использование изменения размера для заполнения пустого вектора, отметьте this

Надеюсь, это поможет;)

...