C++Primer 第十七章

时间:2021-09-09 19:22:44
//1.当我们希望将一些数据组合成单一对象,但又不想麻烦地定义一个新的数据结构来表示这些数据的时候,tuple非常有用。其和其伴随类型和函数都定义在头文件tuple中,声明在命名空间std中。
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的类型由初始值的类型推断。
== != < //对两个tuple指向关系运算,注意:当两个tuple具有相同数量的成员时才可以比较它们
get<i>(t); //返回第i个数据成员的引用
tuple_size<tupleType>::value; //一个类模板,可以通过一个tuple类型来初始化,有一个名为value的数据成员,类型为size_t,表示给定的tuple类型中成员的数量
tuple_element<i, typleType>::type; //一个类模板,可以通过一个常量和一个tuple类型来初始化,有一个type的成员,表示给定tuple类型中指定成员的类型
// tuple的一个常见用途是从一个函数返回多个值。 //2.bitset类型定义在头文件bitset中。声明在命名空间std中。可以将位运算符作用于bitset对象。
//bitset的构造函数:
bitset<n> b; //b有n位,每一位均为0
bitset<n> b(u); //b是unsigned long long值的低n位拷贝,如果n大于unsigned long long的大小,则b的高位将被置为0
bitset<n> b(s, pos, m, zero, one); //b是string s从位置pos开始的m个字符的拷贝。s只能包含zero和one,若s含有其他字符将抛出异常,pos默认为0,m默认为string::npos(32位程序为4字节最大整数,64位程序为8字节最大整数),zero默认为'0',one默认为'1'
bitset<n> b(cp, pos, m, zero, one); //类似于上个构造函数,但是从cp指向的字符数组中拷贝字符。如果未提供m则cp必须指向一个C风格字符串。若提供了m则从pos处开始至少有m个zero或one字符。
// bitset第一位为最低位,最后一个为最高位
string s = "";
bitset<> b(s); //b = [6](0,1,0,1,0,1) 注意点:string的下标使用规则和bitset相反
bitset<> b1(); //b1 = [5](1,0,0,0,0)
//bitset的操作:
b.any() //b中是否存在置位的二进制位
b.all() //b中所有位都置位了吗
b.none() //b中不存在置位的二进制位吗
b.count() //b中的置位数
b.size() //返回b的位数
b.test(pos) //返回pos位置是否置位
b.set(pos, v) //将位置pos处置位bool值v,v默认为true,若未传递实参则将b中所有位置位
b.set()
b.reset(pos) //将位置pos处的位复位,若没传递参数则将b中所有位复位
b.reset()
b.flip(pos) //改变位置pos处的位状态,若没有传递参数则改变b中所有位的位状态
b.flip()
b[pos] //返回b中pos处的位的引用
b.to_ulong() //返回一个unsigned long或者unsigned long long,若待转类型大小不能接受b所表示的大小时,将发生overflow_over异常
b.to_ullong()
b.to_string(zero, one) //返回一个string,表示b中的位模式。zero和one的默认值为'0', '1',用来表示b中的0,1 //3.正则表达式regex:待研究 //4.随机数:定义在头文件random中的随机数库定义了一组协作的类:随机数引擎类和随机数分布类。一个引擎类可以生成unsigned随机数序列,一个分布类使用一个引擎类来生成指定类型的、在给定范围内、服从特定概率分布的随机数。
default_random_engine e; //标准库定义了很多随机数引擎类,区别在于性能和随机性质量的不同。每个编译器都会选择其中的一个作为defalut_random_engine类型。此类型一般具有最常用的特性。
auto value = e(); //value = 3499211612
//随机数引擎操作:
Engine e; //默认构造函数:使用该引擎类型默认的种子
Engine e(s); //使用整形值s作为种子
e.seed(s); //使用种子s重置引擎的状态
e.min(); //此引擎可生成的最小值和最大值
e.max();
Engine::result_type; //此引擎生成的unsigned整形类型
e.discard(u); //将引擎推进u步,u的类型是unsigned long long discard[dis·card || dɪ'skɑːd]n.抛弃
//随机数分布类定义了一个调用运算符,接受一个随机数引擎作为参数,分布对象使用它的引擎参数生成随机数,并将其映射到指定的分布:
uniform_int_distribution<unsigned> u(, );
default_random_engine e;
auto value = u(e); //value = 8
//将分布对象和引擎对象的组合称为随机数发生器。注意点:对于给定的发生器,每次运行都会返回相同的数值序列。通过提供一个种子(就是一个数值),引擎可以利用它从序列的一个新的位置重新开始生成随机数。
//随机数分布类的操作:
Dist d; //默认构造函数,使d被准备好使用
d(e); //用相同的e来连续调用d的话,会根据d的分布式类型生成一个随机数序列。e是一个随机数引擎。
d.min(); //返回d(e)能生成的最小值和最大值
d.max();
d.reset(); //重建d的状态,使得随后对d的使用不在依赖于d已经生成的值
//每个随机数分布类都有一个默认模板实参。生成浮点数的分布类型默认生成double值,而生成整形值的分布默认生成int值。
//常用的随机数分布类:
bernoulli_distribution //非模板,总是生成bool值
uniform_int_distribution<IntT> u(m, n); //均匀分布, IntT表示要求一个整形,但不包括bool和任何char类型。m为返回的最小值,n为返回的最大值,m默认为0, n默认为类型IntT对象可以表示的最大值。
uniform_int_distribution<RealT> u(m, n);//均匀分布,RealT表示float, double, long double中的一种
//其余随机数分布类包括:伯努利分布, 泊松分布, 正态分布, 抽样分布。

C++Primer 第十七章的更多相关文章

  1. 【C&plus;&plus;】《C&plus;&plus; Primer 》第十七章

    第十七章 标准库特殊设施 一.tuple类型 tuple是类似pair的模板,每个pair的成员类型都不相同,但每个pair都恰好有两个成员. 不同的tuple类型的成员类型也不相同,一个tuple可 ...

  2. 进击的Python【第十七章】:jQuery的基本应用

    进击的Python[第十七章]:jQuery的基本应用

  3. &lt&semi;构建之法&gt&semi;第十三章到十七章有感以及这个项目读后感

    <构建之法>第十三章到十七章有感 第13章:软件测试方法有哪些? 主要讲了软件测试方法:要说有什么问题就是哪种效率最高? 第14章:质量保障 软件的质量指标是什么?怎么样能够提升软件的质量 ...

  4. 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion&comma;附近点搜索

    第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...

  5. 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记

    第二十七章:shell脚本编程进阶 监测系统统计数据 系统快照报告 1.运行时间 uptime命令会提供以下基本信息: 当前时间 系统运行的天数,小时数,分钟数 当前登录到系统的用户数 1分钟,5分钟 ...

  6. &lbrack;汇编学习笔记&rsqb;&lbrack;第十七章使用BIOS进行键盘输入和磁盘读写

    第十七章 使用BIOS进行键盘输入和磁盘读写 17.1 int 9 中断例程对键盘输入的处理 17.2 int 16 读取键盘缓存区 mov ah,0 int 16h 结果:(ah)=扫描码,(al) ...

  7. 第十七章——配置SQLServer(3)——配置&OpenCurlyDoubleQuote;对即时负载的优化”

    原文:第十七章--配置SQLServer(3)--配置"对即时负载的优化" 前言: 在第一次执行查询或者存储过程时,会创建执行计划并存储在SQLServer的过程缓存内存中.在很多 ...

  8. 第十七章——配置SQLServer(4)——优化SQLServer实例的配置

    原文:第十七章--配置SQLServer(4)--优化SQLServer实例的配置 前言: Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServ ...

  9. 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置

    原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE ...

随机推荐

  1. 浅析mongodb中group分组

    这篇文章主要介绍了浅析mongodb中group分组的实现方法及示例,非常的简单实用,有需要的小伙伴可以参考下. group做的聚合有些复杂.先选定分组所依据的键,此后MongoDB就会将集合依据选定 ...

  2. 安装R语言扩展包diveRsity-1

    今天去了学院的运动会呢-扮熊本熊超开心-写完这篇我补上我的图么么哒 ××××××××××××文末高能预警!!!!!这个包的安装并不是本周的任务!!!!!我真是萌萌哒×××××××××××××× ××× ...

  3. 3、python&comma;read&lpar;&rpar;&comma;readlines&lpar;&rpar;和readline&lpar;&rpar;

    我们谈到"文本处理"时,我们通常是指处理的内容. Python 对文件对象的操作提供了三个"读"方法: .read()..readline() 和 .readl ...

  4. How to Make LastPass Even More Secure with Google Authenticator

    Google Authenticator LastPass supports Google Authenticator, which is officially available as an app ...

  5. c&num;获取数组中指定元素的索引

    //获取元素的索引 ArrayList arrList = new ArrayList(); ; i < array.Length; i++) { ) { arrList.Add(i); } } ...

  6. python 设计模式,&OpenCurlyDoubleQuote;多”例模式

    版本1:一个账号不能同时是司机乘客. #-*- coding:utf-8 -*- ''' Created on 2016年8月2日 @author: yangfanholiday ''' class ...

  7. ubuntu文件系统分区调整&lpar;解决目录空间不足、分配不均问题&rpar;

    1. 安装 tuxboot (ubuntu下烧写工具) sudo apt-add-repository ppa:thomas.tsai/ubuntu-tuxboot sudo apt-get upda ...

  8. this与super

    this是引用,表示当前对象,堆中每一个对象都有this,保存的地址指向自身:super不是引用,是表示当前对象的父类特征. this可以使用在构造方法中,即this(..),必须出现在代码第一行,代 ...

  9. 什么是ORM&quest;为啥要是用ORM?

    了解orm,先了解以下概念: 什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的数据存储在关系型的数据库中 ...

  10. pem转cer

    openssl x509 -inform pem -in fullchain.pem -outform der -out fullchain.cer