C++ 学习笔记(17)tuple类型、bitset类型、随机数(引擎和分布)、IO库(操纵符、未格式化输入输出、随机访问)

2023-11-08

C++ 学习笔记(17)tuple类型、bitset类型、随机数(引擎和分布)、IO库(操纵符、未格式化输入输出、随机访问)

参考书籍:《C++ Primer 5th》


17.1 tuple 类型

在这里插入图片描述

17.1.1 定义和初始化tuple

  • tuple 的构造函数是explicit的。
tuple <int, float , string> t = {1, 2.0, "stf"};	// 错误。要使用显式构造
tuple <int, float , string> t{1, 2.0, "stf"};	// 正确。
auto t1 = make_tuple(123, 6.6, "bbb");		// tuple<int, double, const char *>
get<0>(t1);		// 获取第一个对象的引用(int &):123
size_t sz = tuple_size<decltype(t1)>::value;	// t1的成员数量:3
tuple_element<1, decltype(t1)>::type d = get<1>(t1);	// t1第二个成员类型:double

17.2 bitset 类型

  • 值为unsigned long long 类型。

在这里插入图片描述
在这里插入图片描述

bitset<8> bitvec1(~1);		// 除了第一位为0,其他7为1,即:1111 1110
bitset<4> bitvec2("01011111");	// 使用字符串直接初始化,因为只有4位,实际为:0101
bitvec1 |= 1UL;				// 将第一位置1
bitvec1 &= ~(1UL << 3);		// 将第四位置0

17.3 正则表达式

略。


17.4 随机数

  • 随机数引擎类:生成随机unsigned序列。
  • 随机数分布类:使用引擎返回服从特定概率分布的随机数。
  • 随机数发生器:指分布对象和引擎对象的组合。
  • 随机数引擎和分布都是函数对象类。
  • C++程序不应该使用库函数rand,而应该使用default_random_engine类和恰当的分布类对象。

17.4.1 随机数引擎和分布

  • 相同种子的引擎,产生相同的随机数。(对于局部随机发生器,可以设置为static以保证每次调用都不同)

在这里插入图片描述

default_random_engine e;		// 默认随机数引擎
for (size_t i = 0; i < 10; i++)
	cout << e() << " ";			// 随机数,范围在[0,unsiged最大值]
cout << endl;
uniform_int_distribution<unsigned> u(0, 9);	// 均匀分布,随机整数,范围在[0, 9]
for (size_t i = 0; i < 10; i++)
	cout << u(e) << " ";		// 均匀分布在[0, 9]的随机数

17.4.2 其他随机数分布

在这里插入图片描述


17.5 IO库再探

17.5.1 格式化输入与输出

在这里插入图片描述

  • cout.precision:设置精度时,浮点数会安精度舍入,即3.14159在精度为四位时,值为3.142,精度为三位时,值为3.14。

  • 定义在iomanip头文件的操纵符:

在这里插入图片描述

17.5.2 未格式化的输入输出操作

在这里插入图片描述

  • peek:返回输入流中下一个字符的副本,但不会从留在删除,返回的值还在流中。

  • unget:输入流往后移,最后读取值重新回到流中。

  • putback:同unget,但接受的参数必须与最后读取的值相同。

  • 输入操作返回值为int,因为可以用来判断是否到文件末端(宏:EOF)。

在这里插入图片描述

  • get()将分隔符留作istream中下一个字符,getline()则读取并丢弃分隔符。

17.5.3 流随机访问

  • 随机IO本质依赖于系统。
  • seek 和 tell 函数分别代表“放置”和“获得”,两者操作同一个标记。

在这里插入图片描述


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 学习笔记(17)tuple类型、bitset类型、随机数(引擎和分布)、IO库(操纵符、未格式化输入输出、随机访问) 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 各向异性(anisotropic)浅提

    文章目录 各向异性 anisotropic 定义 哪种物体具有各向异性反射 什么导致各向异性反射 总结 各向异性 anisotropic 定义 它指一种存在方向依赖性 这意味着在不同的方向不同的特性 相对于该属性各向同性 当沿不同轴测量时
  • [Anaconda]——Linux下conda虚拟环境缺“msvcrt”

    问题 这里是在使用不同节点的系统时 一个是普通的节点 一个是GPU节点 在普通节点下准备好了所有的环境 使用Linux的NIS功能 利用网络把硬盘挂载到不同的节点 这个时候普通节点和GPU节点就做到了数据同步 但是发现在使用conda虚拟环
  • ThinkPHP6 框架 对接 ChatGPT应用

    ThinkPHP6是一款优秀的PHP开发框架 它提供了丰富的功能和易于使用的API 使得开发人员可以快速构建高质量的Web应用程序 本文将介绍如何使用ThinkPHP6框架对接ChatGPT应用 实现智能聊天机器人的功能 首先 我们需要在T
  • 部署mac os渗透测试环境

    一 序言 每次重装系统后配置环境都是需要耗费大量时间 特此写一篇mac os部署渗透测试环境 二 过程 一 系统设置 1 常用设置 SSD 开启 TRIM 支持 sudo trimforce enable APP安装开启任何来源 sudo
  • Lua coroutine.create

    Lua coroutine creat 相当于在C 中使用lua newthread Equivalent of Lua coroutine create in C using lua newthread 问 题 I have a call
  • 基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(二十)面剔除

    Vries的教程是我看过的最好的可编程管线OpenGL教程 没有之一 其原地址如下 https learnopengl cn github io 04 20Advanced 20OpenGL 04 20Face 20culling 关于面剔
  • # HTB-Tier2- Vaccine

    HTB Tier2 Vaccine Web Network Vulnerability Assessment Databases Injection Custom Applications Protocols Source Code Ana
  • 毕业设计 基于Arduino的计算器

    0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求 为了大家能够顺利以及最少的精力通过毕设 学长分享优质毕业设计项
  • 暑期实训日志11——webstorm+chrome实时浏览插件

    在网上看到一个webstorm chrome里JetBrains IDE Support能够实现实时浏览的小工具 感觉非常实用 一 JetBrains IDE Support下载 下载地址 直接从谷歌商店下载也可 前提是进得去 下载好后打开
  • sqli-labs(28-28a)

    Less 28 1 测试http 127 0 0 1 sqli labs Less 28 id 1 27 页面回显不正常 但又没有错误提示 报错注入没戏 尝试闭合语句 加单引号回显不正常 说明sql语句闭合至少有 可能有 判断有无 在Les
  • log4cplus基础知识

    一 简介 log4cplus是C 编写的开源的日志系统 具有线程安全 灵活 以及多粒度控制的特点 通过将信息划分优先级使其可以面向程序调试 运行 测试 和维护等全生命周期 你可以选择将信息输出到屏幕 文件 NT event log 甚至是远
  • SSM controller要能跳转页面又要能返回字符串

    SpringMVC因为添加了下面这个bean 视图解析器 当你方法返回的是 json 字符串等其它值时 会404 跳转 jsp jsp页面
  • 回文数的判断

    文章目录 题目 一 方案一 二 方案二 三 方案三 四 方案四 题目 判断一个整数是否是回文数 回文数是指正序 从左向右 和倒序 从右向左 读都是一样的整数 提示 下面案例可供参考 一 方案一 public boolean palindro
  • 二叉树 深度优先搜索(DFS)、广度优先搜索(BFS)

    深度优先搜索算法 Depth First Search DFS是搜索算法的一种 它沿着树的深度遍历树的节点 尽可能深的搜索树的分支 当节点v的所有边都己被探寻过 搜索将回溯到发现节点v的那条边的起始节点 这一过程一直进行到已发现从源节点可达
  • pytorch Embedding模块,自动为文本加载预训练的embedding

    pytorch 提供了一个简便方法torch nn Embedding from pretrained 可以将文本与预训练的embedding对应起来 词 embedding word1 0 2 3 4 word2 1 2 3 4 word
  • Pytorch(六)(模型参数的遍历) —— model.parameters() & model.named_parameters() & model.state_dict()

    神经网络的模型参数 model parameters model named parameters model state dict 这三个方法都可以查看神经网络的参数信息 用于更新参数 或者用于模型的保存 作用都类似 写法略有出入 就以P
  • 爬虫技术研究综述

    爬虫技术研究综述 整理 Ackarlix 挨踢网 中文IT技术社区 http www aitic net 引言 随着网络的迅速发展 万维网成为大量信息的载体 如何有效地提取并利用这些信息成为一个巨大的挑战 搜索引擎 Search Engin
  • react运行项目出现报错:process is not defined

    具体报错效果 导致页面完全不能动弹 点击按钮没有效果 解决方式 首先删除 package lock json 文件夹 然后执行命令 npm install react error overlay 6 0 9 最后重新启动项目
  • End-to-End Object Detection with Transformers[DETR]

    End to End Object Detection with Transformers DETR 背景 概述 相关技术 输入 提取特征 获取position embedding transformer encoder decoder 回
  • C++ 学习笔记(17)tuple类型、bitset类型、随机数(引擎和分布)、IO库(操纵符、未格式化输入输出、随机访问)

    C 学习笔记 17 tuple类型 bitset类型 随机数 引擎和分布 IO库 操纵符 未格式化输入输出 随机访问 参考书籍 C Primer 5th 17 1 tuple 类型 17 1 1 定义和初始化tuple tuple 的构造函