type
status
date
slug
summary
tags
category
icon
password
Property
C++ 11
中引入了tuple
类型,它类似pair
,但它可以有任意多个成员。每个确定的tuple
类型的成员数是固定的。可以在想将一些数据组合成单一对象,但又不想定义一个新的数据结构时使用。tuple
及其伴随类和函数都定义在头文件tuple
中,tuple
支持的操作:定义和初始化tuple
与
pair
相同,tuple
的默认构造函数成员也是将元素值初始化的:定义
tuple
时,需要指出所有成员类型。tuple
只能直接初始化,它的构造函数是explicit
的:类似
make_pair
函数,标准库定义了make_tuple
函数,可以用它来生成tuple
对象:访问tuple的成员
获取上例
tuple
元素:获取
tuple
成员的数量和类型:tuple_size
的成员value
是类型为public constexpr static size_t
的数据成员。关系和相等运算符
tuple
的关系运算符:tuple
定义了==
和<
,因此可以传递给算法,在无序容器中也可以将tuple
作为关键字类型。使用tuple返回多个值
tuple
的一个常见用途是从一个函数返回多个值。假定一家连锁书店中每一家都用一个vector<Sales_data>
保存销售记录,它将每本书的销售记录放在一起,之后再用vector<vector<Sales_data>>
,保存每家书店的销售情况,想找到出售过某本书的书店,可以创建一个tuple
保存这家店的索引和两个表示这家店卖出这本书范围的迭代器:equal_range
功能与关联容器同名成员类似,前两个参数接受一个迭代器范围,第三个接受一个值,默认情况下,使用元素的<
运算符,但Sales_data
没有<
运算符,因此第四个参数传递给它的是compareIsbn
函数的指针用以代替<
运算符。打印汇总出售信息:
Sales_data
定义了加法运算符,可以使用标准库的accumulate
函数,求和起点为书名为s、卖出数为0的Sales_data对象。