我有这个案例:
std::vector<4_integers> v;
什么最适合这里?
std::tuple
解决方案:
std::vector<std::tuple<int,int,int,int>> v;
std::array
解决方案:
std::vector<std::array<int,4>> v;
为什么?
编辑(用例):
很抱歉之前没有提到这一点。我将按如下方式使用它:
for(const auto& item:v){
some_function(item[0],item[1],item[2],item[3]); // or tuple equivalent
}
当然我需要保存它们,因为计算 4 个整数不是我想要一次又一次重复的事情。
最佳答案
对于这个具体案例,我不同意这些评论。对于同质类型的容器 - 如这里的情况(所有 int
) - array
更胜一筹。
在查看std::tuple
的界面时与 std::array
,很明显后者是一个容器(例如带有迭代器),而前者不是。这意味着标准库的其余部分将更自然地适用于后者。
如果类型不是同质的,就不会有问题 - 它必须是 std::tuple
。
关于c++ - std::tuple 与 std::array 作为 std::vector 的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743470/