如何通过索引设置std::tuple元素?

问题描述 投票:0回答:3

可以使用

std::tuple
通过索引从
std::get
获取元素。 类似地,如何通过索引设置元组的元素?

c++ templates indexing tuples
3个回答
176
投票

std::get
返回对该值的引用。所以你设置这个值是这样的:

std::get<0>(myTuple) = newValue;

这当然假设

myTuple
是非常数。您甚至可以通过
std::move
将项目从元组中移出,方法是在元组上调用它:

auto movedTo = std::get<0>(std::move(myTuple));

27
投票

get
的非常量版本返回一个引用。您可以分配给参考。例如,假设
t
是元组,则:
get<0>(t) = 3;


0
投票

我知道这是一个老问题,但是通过索引设置元组元素的语法有点奇怪。也许

std::tie
(也返回 lref)是一种更好的机制,类似于

std::tuple<bool, std::string, int> my_tuple = std::make_tuple(true, "foo", 42);

bool b;
std::string s;
int i;
std::tie(b, s, i) = my_tuple;

b = false;
s = "bar";
© www.soinside.com 2019 - 2024. All rights reserved.