Это может быть глупый вопрос, но есть кое-что, что я не совсем понимаю. При использовании вектора, когда я хочу «push_back» элемент в определенную позицию, я могу сделать это, только если я инициализирую вектор определенным образом.
Например, когда я использую эту инициализацию:
std::vector<int> Myvec;
int size = 0;
int x = 0;
std::cin >> size;
for(int i = 0; i < size; i++)
{
std::cin >> x;
Myvec[i].push_back(x);
}
Я получаю следующую ошибку:
запрос на член 'push_back' в 'Myvec.std :: vector <_Tp, _Alloc> :: operator []> (((std :: vector :: size_type) i))', который имеет неклассный тип '__gnu_cxx :: __ alloc_traits> :: value_type {aka int} '|
Но когда я использую следующую инициализацию, она работает:
int size = 0;
int x = 0;
std::cin >> size;
std::vector<int> Myvec[size];
for(int i = 0; i < size; i++)
{
std::cin >> x;
Myvec[i].push_back(x);
}
У меня нет проблем с его использованием, и я могу реализовать его в самых разных задачах, но это меня беспокоит, потому что я не уверен, почему это на самом деле работает. Заранее благодарю за помощь.