C++是否提供与 pair<T1、T2> 相当的"triple"模板?

Does C++ provide a "triple" template, comparable to pair<T1, T2>?

本文关键字:gt 模板 triple T2 T1 是否 pair C++ lt      更新时间:2023-10-16

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;