【发布时间】:2015-05-13 10:35:00
【问题描述】:
假设我有一个std::tuple:
std::tuple<int,int,int,int> t = {1,2,3,4};
我想使用std::tie 只是为了这样的可读性目的:
int a, b, c, d; // in real context these names would be meaningful
std::tie(a, b, c, d) = t;
对比只是使用t.get<int>(0)等。
GCC 会优化此元组的内存使用,还是会为a, b, c, d 变量分配额外空间?
【问题讨论】:
-
何不试试呢? (顺便说一句,它可能会。)
-
查看godbolt。简短的回答:举个简单的例子,是的。通过
tie()或get<N>()对元组中的元素求和会产生相同的程序集。 -
有什么理由为什么需要将一个可以独立确定的经验答案的问题提交到互联网问答网站?
-
@EJP 我觉得这个问题有更多的维度,了解什么是围绕相对较新的 C++ 结构的有效优化以及即使优化是有效的,是否可以期望编译器执行该优化。元组引入了一些有趣的权衡,这有点超出了这个问题的范围,但是在某些更复杂的情况下,编译器没有进行明显的优化。
标签: c++ c++11 optimization tuples tie