【发布时间】:2017-06-12 12:19:29
【问题描述】:
我必须创建一个包含另一个向量的选定元素的向量。在一个向量中所做的更改也应该反映在另一个向量中。所以我必须使用我打算复制的元素的引用。
例如,
std::vector<int> a{1,2,3,4,5,6};
std::vector<int> b;
假设如果我参考b 向量复制奇数,b 将包含 1,3 和 5。如果我更改 b 的值,a 向量中也应该看到相同的变化。
STL 中的方法是什么?
编辑:
我假设相同的内存地址位置可以由多个变量共享。
上述代码的目的是将较小的未知变量向量传递给要求解的外部求解器。由于更改将在较大的向量中自动更新,因此我不需要跟踪它。看来我必须为上述目的使用指针。
【问题讨论】:
-
这很危险。当添加新元素时,
std::vector可能会重新分配其内部缓冲区。因此,b将丢失其引用。顺便提一句。我曾经回答过一个类似的问题:vector of existing objests。 (它使用std::reference_wrapper由 user2079303 提议。) -
为什么首先需要第二个向量?如果要修改
a的所有奇数条目,那么简单地修改a中的奇数条目会容易得多 -
@tobi303,在我的程序中,较大的向量是未解决的变量,我会将它的一些元素(较小的向量)传递给外部库来解决这些变量。