在向量向量中访问C ++向量而不复制它

时间:2015-10-07 05:13:14

标签: c++ vector

如果我像这样创建矢量矢量:

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处获取对象的副本?我该怎么做?

2 个答案:

答案 0 :(得分:3)

使用参考。

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

答案 1 :(得分:1)

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

auto& myVector = myVectorOfVectors[N];

注意:需要c ++ 11。