访问vector的vector中的c++ vector而不复制它

Accessing a C++ vector in a vector of vectors without copying it

本文关键字:vector 复制 c++ 中的 访问      更新时间:2023-10-16

如果我创建一个向量的向量:

std::vector<std::vector<int>> myVectorOfVectors;

然后填充一些东西:

std::vector<int> myVector1;
myVector1.push_back(1);
myVector1.push_back(2);
myVector1.push_back(3);
myVector1.push_back(4);
myVectorOfVectors.push_back(myVector1);
std::vector<int> myVector2;
myVector2.push_back(1);
myVector2.push_back(2);
myVector2.push_back(3);
myVector2.push_back(4);
myVectorOfVectors.push_back(myVector2);
std::vector<int> myVector3;
myVector3.push_back(1);
myVector3.push_back(2);
myVector3.push_back(3);
myVector3.push_back(4);
myVectorOfVectors.push_back(myVector3);

我如何分配myVectorOfVectors的任何给定元素到一个变量而不复制它?例如,我很确定下面的代码将复制索引N处的向量:

std::vector<int> myVector = myVectorOfVectors[N];

是否有某种方法可以获得索引N的对象指针,而不是索引N的对象副本?我该怎么做呢?

使用引用

std::vector<int>& myVector = myVectorOfVectors[N];

使用auto&,您将不必重复类型:

auto& myVector = myVectorOfVectors[N];