获取元组元素的引用

时间:2018-03-21 02:46:53

标签: c++ reference stl tuples

我们说我有一个包含ABC类型的元组:

std::tuple<A,B,C> t;

如何提取对其中一个元素的引用,一个可变引用,以便我可以修改它?

std::get会返回一份副本。

1 个答案:

答案 0 :(得分:2)

与你在OP中所说的相反,std::get返回一个引用。实际上它甚至有tuple&&的重载,返回T&&。您的误解可能源于您在导致副本的表达式中使用它的事实。一个值得注意的例子是auto,它被设计为默认情况下不声明引用。看看下面的代码。

std::tuple<int, int> my_tuple;

// Declare an int whose value is copied from the first member of the tuple
auto my_int = get<0>(my_tuple);

// Get a reference to it instead
auto& my_int_ref = std::get<0>(my_tuple);
my_int_ref = 0;    // Assign 0 to the first element

// Direct use inside an expression also works.
std::get<0>(my_tuple) = 1;    // Assign 1 to the first element.