类似STL对的三胞胎类 - 我自己动手吗?

ein*_*ica 27 c++ c++-standard-library stdtuple triplet

我想使用一个三元组类,尽可能与std :: pair类似.STL似乎没有.我不想使用太重的东西,比如Boost.是否有一些有用的FOSS非限制性许可三联类可以从某个地方解除?我应该自己动手吗?我应该完全做些什么吗?

编辑:关于std::tuple......

特定于三胞胎的课程真的没有益处吗?我的意思是,有了元组,我做不到

template<typename T1, typename T2, typename T3> std::tuple<T1, T2, T3> triple;
Run Code Online (Sandbox Code Playgroud)

我可以吗?我不是必须键入dede个人类型组合三元组吗?

Jos*_*eld 37

不,不要自己动手.相反,看看std::tuple- 这是一个概括std::pair.所以这是s的值初始化三元组int:

std::tuple<int, int, int> triple;
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以只为三元组设置一个类型别名:

template<typename T1, typename T2, typename T3>
using triple = std::tuple<T1, T2, T3>;
Run Code Online (Sandbox Code Playgroud)


pol*_*ver 7

如果您可以使用C++ 11,请使用std :: tuple

如果没有,请使用boost :: tuple


Joh*_*ing 6

如果您使用的是C++ 11,则可以使用std::tuple.

如果你正在使用C++ 03,那么你要么需要自己动手(这不是太难),要么使用tupleBoost.