Основная проблема заключается в том, что push_back
копирует свой параметр в конец вектора.Чтобы изменить объект в векторе, вам нужно получить ссылку на него.Один из подходов:
std::vector< std::vector<int> > my_vector;
my_vector.reserve(2); // Going over the allocation invalidates references
my_vector.push_back( std::vector<int>() );
std::vector<int> & a = my_vector.back();
my_vector.push_back( std::vector<int>() );
std::vector<int> & b = my_vector.back();
(я изменил имя переменной, потому что использование «вектора» в качестве имени переменной может привести к путанице.)
Если вы можете использовать C ++ 17есть способ уменьшить количество строк кода, используя emplace_back
.