这是我先前提出的另一个问题的后续。
假设我有:
struct foo {
int x;
std::string y;
some_big_class z;
};
foo s;
现在我正在迭代一堆tuple<int, std::string, some_big_class>
,我想对每个元组,用元组中的值填充s,然后对s
做一些事情。
假设我可以std::move
元组,那么最有效的方法是什么?
我可以重写结构体,使用一个元组作为存储,然后有一个移动构造函数来接受元组,但这看起来并不太优雅,因为我所有的访问器都必须跟踪元组中的哪个元素是“他们的”,等等。(这个例子只是一个玩具例子;我真实的的结构有很多元素)。
我上一个问题的解决方案涉及到使用std::make_from_tuple
高效地创建一个 new foo对象。这个问题是关于有效地将元组的内容转移/移动到 existing foo对象中。
1条答案
按热度按时间kkbh8khc1#
你可以用
如果结构体和元组之间的顺序不同,或者元组中的元素比需要的多,这也可以让你随意移动元素: