C++ Primer 第11章关联容器

news2024/12/23 19:25:24

在这里插入图片描述

11.1 使用关联容器

  • map类型通常被常被称为关联数组。关联数组与正常数组类似,不同之处在于其下标不必是整数
  • set就是关键字的简单集合,当想知道一个值是否存在时,set是最有用的

使用map

#include<iostream>
#include<string>
#include<map>
using namespace std;

int main(int argc, char** argv)
{
	map<string, size_t> wordCount;
	string word ;

	while (cin >> word)
	{
		++wordCount[word];
		if(word=="0")
            break;
	}
	for (const auto &w : wordCount)
	{
		cout << w.first << " :  " << w.second << ends;
	}
	return 0;
}

C++ basic_string::_S_construct null not valid
stackoverflow例子
std::string 字符串不可以初始化为NULL,虽然能通过编译,但是会出现运行错误。
std::string 使用以下两种初始化为空的方式:

std::string s;//执行默认构造函数
std::string s = "";//执行拷贝构造函数
  • 当从map中提取一个元素时,会得到一个pair类型的对象。pair是一个模板类型,保存两个名为first和second的数据成员。前者保存关键字后者保存对应的值。

使用set

在这里插入图片描述

  • 如果给定关键字在set集合中,迭代器指向关键字。否则find返回尾喉迭代器。

11.2 关联容器概述

在这里插入图片描述

11.2 定义关联容器

在这里插入图片描述

初始化multimap或multiset

C++ Primer 中指出,size_type是一种类型,确保能够保存可能存在的最大向量中的所有元素,这句话究竟怎么理解?
答:
所谓 size_type 就是这个“vector 的 size 的类型”。size就是指vector有多少个元素,这个“多少个”也是个整型值,它的类型就是 size_type。
举个具体的例子:
假如有个vector,你调用size()来得到它有多少个元素,你要把这个值存在一个变量里,那么这个变量该声明为什么类型呢?int 型吗? 万一这个vector的元素数超过了 int 的范围呢? 要不就用 long? 万一也不够用呢??
所以,我们把 size_type 作为这个 size 值的类型,你只要声明一个 size_type 类型的变量就能存下“元素个数”的值。顺便一提,在 C 语言中 size_t 指的是系统中最大的整型类型,一般在前述情况下都是使用 size_t 类型的。size_t不是容器概念,而size_type是容器概念,没有容器不能使用。size_type和size_t没有本质区别。

在这里插入图片描述

11.2.2 关键字类型的要求

在这里插入图片描述

有序容器的关键字类型

使用关键字类型的比较函数

在这里插入图片描述

11.2.3 pair类型

  • 这是一个标准库类型,定义在头文件utility
  • 一个pair保存两个数据成员,是一个用来生成特定类型的模板
    在这里插入图片描述

创建pair对象的函数

在这里插入图片描述

11.3 关联容器操作

在这里插入图片描述

11.3.1 关联容器迭代器

在这里插入图片描述

set的迭代器是const的

在这里插入图片描述

遍历关联容器

关联容器和算法

在这里插入图片描述

11.3.2 添加元素

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

检测insert的返回值

在这里插入图片描述

展开递增语句

在这里插入图片描述

向multiset或multimap添加元素

在这里插入图片描述

11.3.3 删除元素

在这里插入图片描述

11.3.4 map的下标操作

在这里插入图片描述

使用下标操作的返回值

在这里插入图片描述

11.3.5 访问元素

在这里插入图片描述

对map使用find代替下标操作

在multimap或multiset中查找元素

在这里插入图片描述

一种不同的,面向迭代器的解决方法

在这里插入图片描述

equal_range函数

在这里插入图片描述

11.3.6 一个单词转换的map

在这里插入图片描述

单词转换程序

在这里插入图片描述

建立转换映射

在这里插入图片描述

生成转换文本

在这里插入图片描述

11.4 无序容器

在这里插入图片描述

使用无序容器

在这里插入图片描述

管理桶

在这里插入图片描述

无序容器对关键字类型的要求

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧水务物联网数据采集平台和营收管理平台建设

平台概述 智慧水务物联网数据采集平台是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为支撑&#xff0c;以城市水资源、水生…

MySQL - 第10节 - MySQL索引特性

1.索引的概念 索引的概念&#xff1a; • 数据库表中存储的数据都是以记录为单位的&#xff0c;如果在查询数据时直接一条条遍历表中的数据记录&#xff0c;那么查询的时间复杂度将会是O(N)。 • 索引的价值在于提高海量数据的检索速度&#xff0c;只要执行了正确的创建索引的操…

B049-cms04-浏览次数 富文本 轮播图 上传

目录 浏览次数页面加载发送请求后台处理请求前台展示 展示日期富文本编辑static下引入富文本资源文件夹模态框文本域替换成如下内容底部引入相关文件调整模态框样式把富文本选项移到模态框前面上传表情或图片等富文本添加操作手动清空富文本编辑器内容修改操作手动回显富文本编…

postman接口测试—Restful接口开发与测试

开发完接口&#xff0c;接下来我们需要对我们开发的接口进行测试。接口测试的方法比较多&#xff0c;使用接口工具或者Python来测试都可以&#xff0c;工具方面比如之前我们学习过的Postman或者Jmeter &#xff0c;Python脚本测试可以使用Requests unittest来测试。 测试思路…

抖音短视频矩阵系统源码:技术开发与实践

目录 一.短视频账号矩阵管理系统囊括的技术 1.开发必备的开发文档说明&#xff1a; 二.技术文档分享&#xff1a; 1.底层框架系统架构&#xff1a; 2.数据库接口设计 1.技术开发必备的开发文档说明&#xff1a; 1.1系统架构&#xff1a; 抖音SEO排名系统主要由以下几个模…

PHP 对PDF文件实现数字签名

PHP通过TCPDF库对生成的PDF文件进行数字签名。 效果如下&#xff1a; 这个是因为签名证书不在可信任证书列表中。 目录 准备数字证书 1.申请数字证书 2.自签名证书 安装TCPDF 证书签名 设置证书路径 设置证书信息 设置文档签名 设置签名外观 图像签名外观 空签名外观…

git使用命令技巧

文章目录 前言查看提交用户名更改提交用户名查看文件的diff查看提交记录Git 本地分支管理查看、切换、创建和删除分支 前言 我们在使用git的时候&#xff0c;提交后会看到如下记录&#xff1a; 经常会遇到提交后&#xff0c;这个作者的名字和自己设置的名字不一致&#xff0…

Python文件操作指南:编码、读取、写入和异常处理

文章目录 文件的编码文件的读取使用 read 方法读取整个文件内容&#xff1a;使用 readlines 方法按行读取文件内容并存储到列表中&#xff1a;使用迭代器遍历文件内容&#xff1a; 文件的写入文件的追加文件操作的综合案例文件的关闭文件的存在性检查异常处理文件操作的更多方法…

如何下载外文文献,PubMed中的文献怎么获取

查找外文文献常用数据库有&#xff1a;PubMed、ScienceDirect、Wiley、Web of Science、EI等等。今天单独讲一下PubMed数据库文献的获取方法。 PubMed是生物医药领域使用最广泛的免费文献检索系统。但PubMed 的资讯并不包括期刊论文的全文&#xff0c;只是提供了指向全文提供者…

Meta Quest v55系统推送,浏览器支持多点触摸

6月25日青亭网报道&#xff0c;此前我们报道了Quest v55公测版系统更新解锁了GPU和CPU频率限制&#xff0c;以及动态分辨率渲染功能。 现在v55系统正式向所有人开启推送&#xff0c;并且加入了更多功能&#xff1a; 1&#xff0c;解锁GPU和CPU限制&#xff0c;支持动态分辨率渲…

Linux进程间通信——管道(上)

目录 前文 一&#xff0c;进程间通信介绍 二&#xff0c;什么是管道&#xff1f; 三&#xff0c;管道的基本原理 3.1 匿名管道 3.2 管道基本原理 四&#xff0c;样例代码 五&#xff0c;管道的读写规则 六&#xff0c;管道的特点 总结 前文 本文主要是讲解一下进程间…

一文告诉你低代码的价值

随着数字化时代的到来&#xff0c;软件开发已经成为企业不可或缺的一部分。然而&#xff0c;传统的软件开发过程往往缓慢而昂贵。由此&#xff0c;低代码开发平台的出现给企业带来了一种新的软件开发方式。在本文中&#xff0c;我们将探讨低代码开发平台的用处和发展史&#xf…

【数据分享】1929-2022年全球站点的逐年平均露点数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

centos7.x升级openeuler详细操作教程

本次升级使用工具为苏研提供 1. 升级前准备操作 1.1 注意事项 ● 迁移工具安装在辅助机中&#xff08;不进行系统迁移的机器&#xff09; ● 辅助机至少给迁移工具的安装预留 1.6G 内存空间 ● 安装之前需要关闭防火墙和 SELinux 的特殊要求 ● 工具安装环境需开启工具端口…

论文格式中要求作者加入orcid的链接在名字后边

论文格式中要求作者加入orcid的链接在名字后边&#xff0c;如下图&#xff1a; 使用网上给的各种写法会出现以下问题&#xff1a; &#xff08;1&#xff09;插入位置不合适 &#xff08;2&#xff09;出现一个正方形的框 &#xff08;3&#xff09;所有参考文献带框&#xff…

中国人民大学与加拿大女王大学金融硕士——努力必有回响,加油,金融人!

有付出&#xff0c;就会有收获&#xff1b;有努力&#xff0c;就会有回响。我们为梦想挥汗如雨&#xff0c;我们为未来奋力跋涉。金融领域在职读研的我们&#xff0c;突破了工作、生活等重围&#xff0c;进入到紧张学习的阶段&#xff0c;充分利用有限的时间完成自己蜕变&#…

微前端(micro-app)使用手册

转载请注明出处&#xff0c;点击此处 查看更多精彩内容 micro-app 使用手册 micro-app 是借鉴了 Web Component 的思想&#xff0c;通过 Custom Element 结合自定义的 Shadow Dom&#xff0c;将微前端封装成一个类 Web Component 组件&#xff0c;从而实现微前端的组件化渲染。…

项目集活动—项目集交付阶段活动

项目集交付阶段活动包括协调和管理项目集实际交付所需执行的项目集活动。这些活动包括围绕 变更控制、报告和信息发布所开展的活动&#xff0c;以及围绕成本、采购、质量和风险所开展的活动。 这些活动提供了贯穿整个项目集生命周期的支持活动和流程&#xff0c;旨在提供项目集…

第十三章 Transformer注意力机制

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

日志分析篇之Linux日志分析

0x00 前言 Linux系统拥有非常灵活和强大的日志功能&#xff0c;可以保存几乎所有的操作记录&#xff0c;并可以从中检索出我们需要的信息。 本文 简介一下Linux系统日志及日志分析技巧。 0x01 日志简介 日志默认存放位置&#xff1a;/var/log/ 查看日志配置情况&#xff1a;…