🥦tuple类型
2022-6-20
| 2023-8-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
C++ 11中引入了tuple类型,它类似pair,但它可以有任意多个成员。每个确定的tuple类型的成员数是固定的。可以在想将一些数据组合成单一对象,但又不想定义一个新的数据结构时使用。
 
tuple及其伴随类和函数都定义在头文件tuple中,tuple支持的操作:
notion image
 

定义和初始化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对象。
 
  • C++
  • 模板特例化bitset 类型
    目录