我正在使用一些从四元组创建一个集合的C++代码。
我想将代码一般化,以便任何大小的元组都可以添加到集合中。
有没有一种方法可以为不定数量元素的元组创建typedef?
为了与我所从事的项目兼容,我希望用C++11
特性来实现。 我希望保留typedefs,如果可能的话,这样它就与编程的其余部分保持一致。
我已经看了很多关于可变函数和模板的信息,但是我仍然不确定如何继续。
#include <set>
#include <functional>
#include <iostream>
typedef std::set<std::tuple<int, int, int, int>> QuaternarySet;
typedef std::tuple<int, int, int, int> QuaternaryTuple;
int main () {
QuaternaryTuple x = std::make_tuple(1, 2, 3, 4);
QuaternaryTuple y = std::make_tuple(5, 6, 7, 8);
QuaternaryTuple z = std::make_tuple(1, 2, 3, 4);
QuaternarySet s;
s.insert(x);
s.insert(y);
s.insert(z);
std::cout << s.size() << std::endl;
}
理想情况下,我正在寻找一些代码,允许我定义类似这样的东西,但我不确定用什么替换省略号。
typedef std::set<std::tuple<int ...>> IndefiniteSet;
typedef std::tuple<int ...> IndefiniteTuple;
也就是说,我需要一个单一类型的运行时可变大小容器int
。
我需要一个单一类型的运行时可变大小容器,int。
如果是“运行时可变大小”,则使用std::vector
。 如果在编译时已知,则使用std::array
,其中n
是您的大小。
std::tuple
用于可能不同类型的几个值,特别是在泛型上下文中; 您可以更多地把它看作一个未命名的结构而不是集合。