当前位置: 首页 > news >正文

C++ Primer第五版_第十一章习题答案(1~10)

文章目录

      • 练习11.1
      • 练习11.2
      • 练习11.3
      • 练习11.4
      • 练习11.5
      • 练习11.6
      • 练习11.7
      • 练习11.8
      • 练习11.9
      • 练习11.10

练习11.1

描述map 和 vector 的不同。

map 是关联容器, vector 是顺序容器。

练习11.2

分别给出最适合使用 list、vector、deque、map以及set的例子。

  • list:双向链表,适合频繁插入删除元素的场景。
  • vector:适合频繁访问元素的场景。
  • deque:双端队列,适合频繁在头尾插入删除元素的场景。
  • map:字典。
  • set:适合有序不重复的元素的场景。

练习11.3

编写你自己的单词计数程序。

#include <iostream>
#include <map>
#include <string>
#include <algorithm>
#include <cctype>int main()
{std::map<std::string, std::size_t> word_count;std::string word;while (std::cin >> word)++word_count[word];for (const auto& elem : word_count)std::cout << elem.first << " : " << elem.second << "\n";return 0;
}

练习11.4

扩展你的程序,忽略大小写和标点。例如,“example.”、"example,"和"Example"应该递增相同的计数器。

#include <iostream>
#include <map>
#include <string>
#include <algorithm>
#include <cctype>void word_count_pro(std::map<std::string, int>& m)
{std::string word;while (std::cin >> word){for (auto& ch : word) ch = tolower(ch);word.erase(std::remove_if(word.begin(), word.end(), ispunct),word.end());++m[word];}for (const auto& e : m) std::cout << e.first << " : " << e.second << "\n";
}int main()
{std::map<std::string, int> m;word_count_pro(m);return 0;
}

练习11.5

解释map和set的区别。你如何选择使用哪个?

map 是键值对,而 set 只有键没有值。当我需要存储键值对的时候使用 map,而只需要键的时候使用 set。

练习11.6

解释set和list 的区别。你如何选择使用哪个?

set 是有序不重复集合,底层实现是红黑树,而 list 是无序可重复集合,底层实现是链表。

练习11.7

定义一个map,关键字是家庭的姓,值是一个vector,保存家中孩子(们)的名。编写代码,实现添加新的家庭以及向已有家庭中添加新的孩子。

map<string, vector<string>> m;
for (string ln; cout << "Last name:\n", cin >> ln && ln != "@q";)for (string cn; cout << "|-Children's names:\n", cin >> cn && cn != "@q";)m[ln].push_back(cn);

练习11.8

编写一个程序,在一个vector而不是一个set中保存不重复的单词。使用set的优点是什么?

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>int main()
{std::vector<std::string> exclude = { "aa", "bb", "cc", "dd", "ee", "ff" };for (std::string word; std::cout << "Enter plz:\n", std::cin >> word;){auto is_excluded = std::binary_search(exclude.cbegin(), exclude.cend(), word);auto reply = is_excluded ? "excluded" : "not excluded";std::cout << reply << std::endl;}return 0;
}

set 的优点是集合本身的元素就是不重复。

练习11.9

定义一个map,将单词与一个行号的list关联,list中保存的是单词所出现的行号。

std::map<std::string, std::list<std::size_t>> m;

练习11.10

可以定义一个vector::iterator 到 int 的map吗?list::iterator 到 int 的map呢?对于两种情况,如果不能,解释为什么。

可以定义 vector<int>::iteratorint 的map,但是不能定义 list<int>::iteratorint 的map。因为map的键必须实现 < 操作,list 的迭代器不支持比较运算。

相关文章:

C++ Primer第五版_第十一章习题答案(1~10)

文章目录练习11.1练习11.2练习11.3练习11.4练习11.5练习11.6练习11.7练习11.8练习11.9练习11.10练习11.1 描述map 和 vector 的不同。 map 是关联容器&#xff0c; vector 是顺序容器。 练习11.2 分别给出最适合使用 list、vector、deque、map以及set的例子。 list&#xff1a…...

GEE:使用LandTrendr进行森林变化检测详解

作者:_养乐多_ 本文介绍了一段用于地表变化监测的代码,该代码主要使用谷歌地球引擎(GEE)中的 Landsat 时间序列数据,采用了 Kennedy 等人(2010) 发布的 LandTrendr 算法,对植被指数进行分割,通过计算不同时间段内植被指数的变化来检测植被变化。 目录 一、加入矢量边界 …...

docker项目实施

鲲鹏916架构openEuler-arm64成功安装docker并跑通tomcat容器_闭关苦炼内功的技术博客_51CTO博客鲲鹏916架构openEuler-arm64成功安装docker并跑通tomcat容器&#xff0c;本文是基于之前这篇文章鲲鹏920架构arm64版本centos7安装docker下面开始先来看下系统版本卸载旧版本旧版本…...

springboot实现邮箱验证码功能

引言 邮箱验证码是一个常见的功能&#xff0c;常用于邮箱绑定、修改密码等操作上&#xff0c;这里我演示一下如何使用springboot实现验证码的发送功能&#xff1b; 这里用qq邮箱进行演示&#xff0c;其他都差不多&#xff1b; 准备工作 首先要在设置->账户中开启邮箱POP…...

Java 进阶(5) Java IO流

⼀、File类 概念&#xff1a;代表物理盘符中的⼀个⽂件或者⽂件夹。 常见方法&#xff1a; 方法名 描述 createNewFile() 创建⼀个新文件。 mkdir() 创建⼀个新⽬录。 delete() 删除⽂件或空⽬录。 exists() 判断File对象所对象所代表的对象是否存在。 getAbsolute…...

“终于我从字节离职了...“一个年薪40W的测试工程师的自白...

”我递上了我的辞职信&#xff0c;不是因为公司给的不多&#xff0c;也不是因为公司待我不好&#xff0c;但是我觉得&#xff0c;我每天看中我憔悴的面容&#xff0c;每天晚上拖着疲惫的身体躺在床上&#xff0c;我都不知道人生的意义&#xff0c;是赚钱吗&#xff1f;是为了更…...

设计模式之策略模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、策略模式是什么&#xff1f; 策略模式是一种行为型的软件设计模式&#xff0c;针对某个行为&#xff0c;在不同的应用场景下&…...

从工厂普工到Python女程序员,聊聊这一路我是如何逆袭的?

我来聊聊我是如何从一名工厂普工&#xff0c;到国外程序员的过程&#xff0c;这里面充满了坎坷。过去我的工作是在工厂的流水线上&#xff0c;我负责检测电池的正负极。现如今我每天从早上6:20起床&#xff0c;6点四五十分出发到地铁站&#xff0c;7:40到公司。我会给自己准备一…...

全国青少年信息素养大赛2023年python·选做题模拟二卷

目录 打印真题文章进行做题: 全国青少年电子信息智能创新大赛 python选做题模拟二卷 一、单选题 1. numbers = [1, 11, 111, 9], 运行numbers.sort() 后,运行numbers.reverse() numbers会变成?( )...

分布式事务Seata原理

Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能与简单易用的分布式事务服务&#xff0c;为用户提供了 AT、TCC、SAGA 和 XA 几种不同的事务模式。Seata AT模式是基于XA事务演进而来&#xff0c;需要数据库支持。AT 模式的特点就是对业务无入侵式&#xff0…...

用ChatGPT怎么赚钱?普通人用这5个方法也能赚到生活费

ChatGPT在互联网火得一塌糊涂&#xff0c;因为它可以帮很多人解决问题。比如&#xff1a;帮编辑人员写文章&#xff0c;还可以替代程序员写代码&#xff0c;帮策划人员写文案策划等等。ChatGPT这么厉害&#xff0c;能否用它来赚钱呢&#xff1f;今天和大家分享用ChatGPT赚钱的5…...

( “树” 之 DFS) 110. 平衡二叉树 ——【Leetcode每日一题】

110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] …...

nvm软件使用-同一个环境下控制多个不同node版本

1.使用场景 nvm是一个用于管理Node.js版本的工具&#xff0c;它可以让你在同一台机器上安装和切换不同的Node.js版本。使用nvm的好处有以下几点&#xff1a; 1.1.nvm可以让你轻松地测试你的代码在不同的Node.js版本下的兼容性和性能&#xff0c;避免因为版本差异导致的问题。…...

连续两个南航的研究生面试出了从来没出现过的问题,本科和研究生都是计算机专业的,竟然说static是不可更改的。

最近面试人数有点多&#xff0c;面试有点频繁&#xff0c;因此发现了一些学生普遍会发生的错误&#xff0c;可以说是很离谱。 因为做了十多年的面试官&#xff0c;无论是大中小厂的面试&#xff0c;还是社招、校招。 从来没有遇到过这样的情况&#xff0c;而且发生在两个南航…...

How to install nacos/nacos-server:v2.1.2-slim with docker

今天给大家介绍一下如何基于Docker的nacos/nacos-server:v2.1.2-slim镜像安装nacos 1、Data Source 我们需要从nacos的github官网下载nacos 2.12发布包 nacos-server-2.1.2.tar.gznacos-server-2.1.2.zip 这里以nacos-server-2.1.2.tar.gz为例来介绍&#xff0c;解压后我们…...

Rust社区引发舆论危机,问题到底出在哪儿?

围绕开源的法律问题&#xff0c;讨论焦点往往集中在开源许可证、软件著作权等方面&#xff0c;商标的讨论却极少引人关注。事实上&#xff0c;关于开源软件以及开源软件的衍生产品的商标使用情况往往处于某种灰色地带。 最近&#xff0c;Rust基金会正在就更新的商标政策征求反馈…...

C++算法恢复训练之归并排序

归并排序&#xff08;Merge Sort&#xff09;是一种基于分治思想的排序算法&#xff0c;它将待排序数组分成两个子数组&#xff0c;然后对这两个子数组分别进行排序&#xff0c;最后将两个已排序的子数组合并成一个有序数组。归并排序是一种稳定的排序算法&#xff0c;具体体现…...

使用Process Explorer和Clumsy工具定位软件高CPU占用问题

目录 1、问题描述 2、使用Process Explorer初步找到CPU占用高的原因 3、使用Clumsy工具在公司内网环境复现了问题...

为何巴菲特和马斯克站在了一起?

股神巴菲特虽然非常传奇&#xff0c;但是马斯克对其并不感冒。马斯克曾经在一档电视节目中表示&#xff0c;实业才是王道&#xff0c;埋怨金融业抢走太多人才和精英&#xff0c;暗指巴菲特为年轻人做了错误示范。当然&#xff0c;巴菲特的投资非常厉害&#xff0c;但也有失手的…...

企业数字化转型全是坑?这几篇数字化转型成功案例,减少70%损失

这篇给大家整理了200企业数字化转型案例合集&#xff0c;涵盖了制造、建筑、教育、零售、互联网等10行业的大中小型企业数字化转型思路&#xff0c;希望对大家有所帮助。 案例全部整合在这篇文章中&#xff0c;点击即可查看>>数字化干货资料合集&#xff01; 01 首先&…...

熵值法实战避坑指南:从数据标准化到权重计算,新手最容易踩的3个雷

熵值法实战避坑指南&#xff1a;从数据标准化到权重计算&#xff0c;新手最容易踩的3个雷 第一次用熵值法做综合评价时&#xff0c;我盯着屏幕上几乎相同的权重值发愣——这和教科书上"差异越大权重越高"的描述完全不符。直到深夜排查才发现&#xff0c;原来在数据标…...

Win11虚拟机密码重置保姆教程:VirtualBox+系统备份双保险

Win11虚拟机密码重置与系统防护全指南&#xff1a;VirtualBox实战策略 在数字化工作环境中&#xff0c;虚拟机已成为隔离测试环境、保障系统安全的标配工具。当我们因各种原因遗忘Windows 11虚拟机密码时&#xff0c;传统物理机的解决方案往往无法直接套用。本文将深入探讨基于…...

如何轻松实现QQ空间历史数据自动化备份:GetQzonehistory完整解决方案指南

如何轻松实现QQ空间历史数据自动化备份&#xff1a;GetQzonehistory完整解决方案指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在为QQ空间里的青春回忆可能丢失而担心吗&#x…...

Windows下MySQL 8.0数据库存储路径迁移实战:释放C盘空间

Windows下MySQL 8.0存储路径迁移全指南&#xff1a;彻底解放C盘空间 对于长期在本地开发环境中使用MySQL的开发者来说&#xff0c;系统盘空间被数据库文件逐渐蚕食是常见痛点。默认安装的MySQL 8.0会将数据目录存放在C盘的隐蔽位置&#xff0c;随着业务数据增长&#xff0c;不仅…...

如何用LuckyLilliaBot在5分钟内构建QQ机器人:OneBot 11协议完全指南

如何用LuckyLilliaBot在5分钟内构建QQ机器人&#xff1a;OneBot 11协议完全指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 想要快速搭建一个功能强大的QQ机器人吗&#xff1f;LuckyLilliaBot为…...

硬件工程师转向嵌入式软件开发的十大技巧

嵌入式系统设计&#xff1a;硬件工程师转向软件开发的十大实用技巧1. 引言嵌入式系统设计是硬件与软件紧密结合的领域&#xff0c;硬件工程师在扩展技能到软件开发时&#xff0c;需要建立新的思维模式和工作方法。本文总结了硬件工程师转向软件设计时需要掌握的十大关键技巧&am…...

英雄联盟智能助手完全指南:3分钟掌握LCU API自动化工具

英雄联盟智能助手完全指南&#xff1a;3分钟掌握LCU API自动化工具 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟…...

3D打印键帽革命:如何用开源模型实现机械键盘的个性化定制

3D打印键帽革命&#xff1a;如何用开源模型实现机械键盘的个性化定制 【免费下载链接】cherry-mx-keycaps 3D models of Chery MX keycaps 项目地址: https://gitcode.com/gh_mirrors/ch/cherry-mx-keycaps 机械键盘爱好者们是否曾为寻找完美键帽而苦恼&#xff1f;传统…...

# React 发散创新:从状态管理到组件化架构的极致实践在前端开发领域,React

React 发散创新&#xff1a;从状态管理到组件化架构的极致实践 在前端开发领域&#xff0c;React 已经成为构建现代 Web 应用的事实标准。但你是否曾思考过——如何让 React 不只是“写页面”&#xff0c;而是真正成为驱动业务逻辑的核心引擎&#xff1f; 本文将带你突破常规思…...

别再死记硬背了!用一次完整的网页访问,帮你彻底搞懂HCIA/HCIP里的TCP/IP和OSI模型

从输入网址到页面加载&#xff1a;用真实场景拆解TCP/IP与OSI模型 想象一下这个场景&#xff1a;你在浏览器地址栏输入"www.baidu.com"&#xff0c;按下回车键&#xff0c;不到一秒就看到了熟悉的搜索页面。这看似简单的操作背后&#xff0c;隐藏着一场精密的网络协议…...