Я видел несколько мест ( например ), где можно инициализировать 2-мерный вектор следующим образом:
vector<vector<int> > vec(3, vector<int>(2, 0));
Я думаю, что этот код соответствует следующему
auto tmp = vector<int>(2, 0);
vector<vector<int> > vec(3, tmp);
Если я прав, то 3 элемента vec
все ссылаются на одну и ту же ссылку. Что означает, что изменение vec[0][1]
также изменяет vec[1][1]
.
Если я ошибаюсь, как C ++ делает инициализацию каждого элемента в vec
другой ссылкой?