C ++如何使用reference_wrapper的向量

时间:2017-07-03 14:08:23

标签: c++ stdvector reference-wrapper

我对reference_wrapper完全不熟悉,所以我需要一个非常简单的例子来理解。

我声明了两个向量:

std::vector<int> vec;
std::vector<std::reference_wrapper<int>> vec_r;

我用一些值填充vec,然后我希望vec_r存储对vec的每个元素的引用,并且我想为vec_r分配值以修改存储在vec中的值。我该怎么办?

1 个答案:

答案 0 :(得分:4)

使用适当的构造函数使用vec_r的内容初始化vec

std::vector<std::reference_wrapper<int>> vec_r(begin(vec), end(vec));

它的工作原理是因为引用包装器是可构造的,并且可以从它们包装的类型中分配。

但请注意,事后修改vec会导致vec_r中的所有内容无效。所以谨慎行事。