C ++: выделение большого 2d-вектора переменного размера в куче - PullRequest
0 голосов
/ 03 мая 2020

(Если мой вопрос глуп, это потому, что я студент)

В моей программе, когда я объявляю свой большой вектор, я получаю "переполнение стека"

   cin >> big_number;
   vector<int> my_vector[big_number];

** переполнение стека ** ... ( note : в приведенном выше примере big_number может принимать значения до 1.000.000)

В моем понимании это происходит потому, что векторы переменного размера помещается в стек (вместо кучи по умолчанию).

Как я могу поместить этот 2d вектор в кучу? Является ли использование пользовательского вектора в куче «плохой практикой»?

1 Ответ

2 голосов
/ 03 мая 2020

Вы должны использовать vector<vector<int>>

Код будет выглядеть как

std::cin >> big_number;
std::vector<std::vector<int>> my_vector(big_number);

Это создаст vector, содержащий big_number пустых vector<int>

...