C++是否提供与 pair<T1、T2> 相当的"triple"模板?
Does C++ provide a "triple" template, comparable to pair<T1, T2>?
c++有类似std::pair但有3个元素吗?
例如:#include <triple.h>
triple<int, int, int> array[10];
array[1].first = 1;
array[1].second = 2;
array[1].third = 3;
您可能正在寻找std::tuple
:
#include <tuple>
....
std::tuple<int, int, int> tpl;
std::get<0>(tpl) = 1;
std::get<1>(tpl) = 2;
std::get<2>(tpl) = 3;
类模板std::tuple
是一个固定大小的异构值集合,从c++ 11开始在标准库中提供。它是std::pair
的推广,在标题
#include <tuple>
你可以在这里阅读:
http://en.cppreference.com/w/cpp/utility/tuple的例子:
#include <tuple>
std::tuple<int, int, int> three;
std::get<0>( three) = 0;
std::get<1>( three) = 1;
std::get<2>( three) = 2;
没有。
但是,您可以使用元组或"双对"(pair<pair<T1,T2>,T3>
)。或者——显然——自己编写类(这应该不难)。
只有两种简单的方法。1)自己实现它。2)获得boost并使用boost::tuple http://www.boost.org/doc/libs/1_55_0/libs/tuple/doc/tuple_users_guide.html,像这样
double d = 2.7; A a;
tuple<int, double&, const A&> t(1, d, a);
const tuple<int, double&, const A&> ct = t;
...
int i = get<0>(t); i = t.get<0>();
int j = get<0>(ct);
get<0>(t) = 5;
相关文章:
- .cpp和.h文件中的模板专用化声明
- C++模板来检查友元函数的存在
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何在c++中为模板函数实例创建快捷方式
- 使用C++中的模板和运算符重载执行矩阵运算
- 有人能分解一下这个c++模板的语法吗
- 如何在c++17中制作一个模板包装器/装饰器
- 模板化建造师专业化
- 调用专用模板时出错"no matching function for call to [...]"
- 模板元程序查找相似的连续类型名称
- 如何在C++20中创建模板别名的推导指南
- 没有名称的C++模板参数
- 具有重复类型的C++可变模板
- 如何将enable-if与模板参数和参数包一起使用
- 什么是模板&lt;&gt;inline bla bla