提问者:小点点

具有不定大小元组C++typedef


我正在使用一些从四元组创建一个集合的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


共1个答案

匿名用户

我需要一个单一类型的运行时可变大小容器,int。

如果是“运行时可变大小”,则使用std::vector。 如果在编译时已知,则使用std::array,其中n是您的大小。

std::tuple用于可能不同类型的几个值,特别是在泛型上下文中; 您可以更多地把它看作一个未命名的结构而不是集合。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(大小|元组|c++typedef)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?