【发布时间】:2020-01-08 08:56:46
【问题描述】:
有一个生成器,每次迭代都会生成一个 16 个整数的元组。我想将这些元组添加到向量中。在创建向量时,我必须写 std::vector<std::tuple<int, int, .... 16 times>>。有没有另一种方法来创建这些元组的向量。
测试元组包含 5 个整数的情况的代码:
#include "cppitertools/itertools.hpp"
#include <iostream>
#include <tuple>
#include <vector>
int main()
{
std::vector<int> v1{0, 1};
std::vector<std::tuple<int, int, int, int, int>> states;
for (auto&& i : iter::product<5>(v1))
{
states.push_back(i);
}
auto size = states.size();
std::cout << size << std::endl;
}
我正在使用cppiterator
【问题讨论】:
-
我不知道该工具是什么以及它提供了哪些接口,但听起来 16 个整数的
std::array比 16 个整数的元组更好。 -
所以你不想写
int,16次? -
@songyuanyao 我想将此代码用作实验的一部分,其中数字从 4 到 100 不等。所以写
int,100 次是不可扩展的。 -
@papabiceps
iter::product<5>(v1)的返回类型是什么? -
如果数字不同,请改用向量。所以一个向量的向量。如果它们仅在编译时变化,您可以将该数字放入 constexpr 并仍然使用
std::array。