C++ Primer系列 第17章 标准库特殊设施

虽然我们不能详细介绍所有标准库设施,但仍有一些标准库设施在很多应用中都是有用的:tuple,bitset,正则表达式以及随机数。我们还将介绍一些附加的IO库功能:格式控制,未格式化IO和随机访问。

17.1 tuple类型

tuple是类似pair的模板。每个pair的成员类型都不相同,但每个pair都恰好有两个成员。不同tuple类型的成员类型也不相同,但一个tuple类型的成员数目可以与另一个tuple类型不同。

  • 我们可以将tuple看作一个“快速而随意”的数据结构。

17.1.1 定义和初始化tuple

当我们定义一个tuple时,需要指出每个成员的类型:

tuple<size_t, size_t, size_t> threeD; // 三个成员都设置为0
tuple<string, vector<double>, int, list<int>>
someVal("constants", {
    3.14, 2.718 }, 42, {
    0,1,2,3,4,5 });

tuple的这个构造函数是explicit的,因此我们必须使用直接初始化语法:

tuple<size_t, size_t, size_t> threeD = {
    1,2,3 }; // 错误
tuple<size_t, size_t, size_t> threeD{
    1,2,3 }; // 正确

类似make_pair函数,标准库定义了make_tuple函数,我们还可以用它来生成tuple对象:

// 表示书店交易记录的tuple,包含:ISBN,数量和每册书的价格
auto item = make_tuple("0-999-78345-X", 3, 20.00);

类似make_pair,make_tuple函数使用初始值的类型来推断tuple的类型。在本例中,item是一个tuple,类型为tuple<const char*, int, double&g

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值