目录
1、pair
2、tuple
1、pair
pair的一个常见用途是从一个函数返回2个值。
注: map的元素是pair。
pair支持的操作(头文件:utility) | |
pair<T1,T2> p | p是一个pair,两个类型分别为T1和T2的成员都进行初始化 |
pair<T1,T2> p<v1,v2> | p是一个成员类型为T1和T2的pair,first和second的成员分别用v1和v2进行初始化 |
pair<T1,T2> p={v1,v2} | 等价于p<v1,v2> |
make_pair(v1,v2) | 返回一个用v1和v2初始化的pair。pair的类型从v1和v2的类型推断出来 |
p.first | 返回p的名为first的(公有)数据成员 |
p.second | 返回p的名为second的(公有)数据成员 |
p1 relop p2 | 关系运算符(<、>、<=、>=)按字典序定义 |
p1==p2 | 当first和second成员分别相等时,两个pair相等。相等性判断利用元素的==运算符实现 |
p1!=p2 |
2、tuple
tuple的一个常见用途是从一个函数返回多个值。
tuple支持的操作(头文件:tuple) | |
tuple<T1,T2,...Tn> t | t是一个tuple,成员数为n,第i个成员的类型为Ti。所有成员都进行值初始化。 |
tuple<T1,T2,...Tn> t(v1,v2,...,vn) | t是一个tuple,成员类型为T1...Tn,每个成员用对应的初始值vi进行初始化。 注:此构造函数是explicit的。 |
make_tuple(v1,v2,...,vn) | 返回一个用给定初始值初始化的tuple,tuple的类型从初始值的类型推断 |
t1==t2 | 当两个tuple具有相同数量的成员且成员对应相等时,两个tuple相等。这两个操作使用成员的==运算符来完成。 |
t1!=t2 | |
t1 repop t2 | tuple的关系运算使用字典序。 注:两个tuple必须具有相同数量的成员。 |
get<i> (t) | 返回t的第i个数据成员的引用;如果t是一个左值,结果是一个左值的引用;否则,结果是一个右值引用。 注:tuple的所有成员都是public的。 |
tuple_size<tupleType>::Value | 一个类模板,可以通过一个tuple类型来初始化。它有一个名为value的public constexpr static数据成员,类型为size_t,表示给定tuple类型中成员的数量。 |
tuple_element<i,tupleType>::type | 一个类模板,可以通过一个整形常量和一个tuple类型来初始化。它有一个名为type的public成员,表示给定tuple类型中指定成员的类型。 |
如果不知道一个tuple准确的类型细节信息,可以用两个辅助类模板来查询tuple成员的数量和类型:
auto item = make_tuple("hello",10,20.0);typedef decltype(item) im;
size_t sz = tuple_size<im>::value;
tuple_element<1,im>::type cnt = get<1>(item)