我看到几个地方(e.g)可以像这样初始化2-dim vector
vector<vector<int> > vec(3, vector<int>(2, 0));
我在想的是,此代码的评估结果如下
auto tmp = vector<int>(2, 0);
vector<vector<int> > vec(3, tmp);
如果我是正确的,那么
vec
的3个元素都引用相同的引用。这意味着修改
vec[0][1]
也会修改vec[1][1]
。如果我错了,C++如何使
vec
中的每个元素的初始化成为不同的引用? 最佳答案
从constructor引用
没有对tmp
的引用,仅是副本。所有单个 vector 都是不同的,修改一个 vector 不会修改其他 vector 。