gpt4 book ai didi

c++ - std::tuple 参数中的类型顺序有什么影响吗?

转载 作者:可可西里 更新时间:2023-11-01 15:06:25 27 4
gpt4 key购买 nike

假设我想在 tuple 中存储三种类型: int , floatstd::vector<double>

如果抛开后续接口(interface)不谈,就这样

tuple<int, float, vector<int>> t;

与此有任何区别

tuple<vector<int>, int, float> t;

由于 tuple 的实现作为可变参数基类,我希望生成的类有一个不同的布局,但是这有什么关系吗?在 tuple 中放置类型时,还需要考虑任何优化注意事项吗? (例如,把最大的放在第一位等)?

最佳答案

标准不对类型的实际布局施加任何限制。顺序唯一影响的是 std::get<N> 的结果, std::tuple_element<N, T>等等。

我知道 libstdc++ 和 Visual C++ 以与给定顺序相反的顺序排列类型; libc++ 按照给定的顺序列出类型。这实质上意味着没有可移植的方法来选择始终产生最佳布局的顺序。

不过,其他顺序也是可能的。允许实现 implement tuple with a layout that always produces minimal size但仍为 std::get<N> 保留相同的语义等等。不过,我不知道执行此操作的任何标准库实现。

关于c++ - std::tuple 参数中的类型顺序有什么影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23910161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com