c++ - std::tuple 与 std::array 作为 std::vector 的项目

标签 c++ arrays c++11 vector tuples

我有这个案例:

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/

相关文章:

c++ - g++-带有-O选项的浮点行为不是严格的C++11标准保形?

c++ - 如何将 __m128 转换为整数

android - String[] Array 通过Intent 到另一个Activity(Main activity extends fragment class)

python - 在 Python 中交错两个 numpy 数组的行

c++ - #include<boost> 没有这样的文件或目录

c++ - 初学者 C++ - 在头文件中使用全局常量时遇到问题

java - 如何通过 Qt JNI 将 null 从 C++ 传递到 Java?

C# 是否可以创建动态 StringBuilder 数组?

c++ - 如何存储和调用可变参数函数和值 vector ?

c++ - 可以在给定 C++ 类型的情况下实例化对象吗?