C++ Primer第五版_第十章习题答案(31~40)

文章目录

      • 练习10.31
      • 练习10.32
      • 练习10.33
      • 练习10.34
      • 练习10.35
      • 练习10.36
      • 练习10.37
      • 练习10.38
      • 练习10.39
      • 练习10.40

练习10.31

修改前一题的程序,使其只打印不重复的元素。你的程序应该使用 unique_copy。

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

using namespace std;

int main()
{
	vector<int> v;
	istream_iterator<int> int_it(cin), int_eof;

	unique_copy(int_it, int_eof, back_inserter(v));
	sort(v.begin(), v.end());

	copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
	cout << endl;
	return 0;
}

练习10.32

重写1.6节中的书店程序,使用一个vector保存交易记录,使用不同算法完成处理。使用 sort 和10.3.1节中的 compareIsbn 函数来排序交易记录,然后使用 find 和 accumulate 求和。

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>
#include "Sales_item.h"

int main()
{
	std::istream_iterator<Sales_item> in_iter(std::cin), in_eof;
	std::vector<Sales_item> vec;

	while (in_iter != in_eof)
		vec.push_back(*in_iter++);
	sort(vec.begin(), vec.end(), compareIsbn);
	for (auto beg = vec.cbegin(), end = beg; beg != vec.cend(); beg = end)
	{
		end = find_if(beg, vec.cend(), [beg](const Sales_item &item) { return item.isbn() != beg->isbn(); });
		std::cout << std::accumulate(beg, end, Sales_item(beg->isbn())) << std::endl;
	}

	return 0;
}

练习10.33

编写程序,接受三个参数:一个输入文件和两个输出文件的文件名。输入文件保存的应该是整数。使用 istream_iterator 读取输入文件。使用 ostream_iterator 将奇数写入第一个输入文件,每个值后面都跟一个空格。将偶数写入第二个输出文件,每个值都独占一行。

#include <fstream>
#include <iterator>
#include <algorithm>

int main(int argc, char **argv)
{
	if (argc != 4) return -1;

	std::ifstream ifs(argv[1]);
	std::ofstream ofs_odd(argv[2]), ofs_even(argv[3]);

	std::istream_iterator<int> in(ifs), in_eof;
	std::ostream_iterator<int> out_odd(ofs_odd, " "), out_even(ofs_even, "\n");

	std::for_each(in, in_eof, [&out_odd, &out_even](const int i)
	{
		*(i & 0x1 ? out_odd : out_even)++ = i;
	});

	return 0;
}

练习10.34

使用 reverse_iterator 逆序打印一个vector。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	for (auto it = v.crbegin(); it != v.crend(); ++it)
	{
		cout << *it << endl;
	}

	return 0;
}

练习10.35

使用普通迭代器逆序打印一个vector。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	for (auto it = std::prev(v.cend()); true; --it)
	{
		std::cout << *it << " ";
		if (it == v.cbegin()) break;
	}
	std::cout << std::endl;

	return 0;
}

练习10.36

使用 find 在一个 int 的list 中查找最后一个值为0的元素。

#include <iostream>
#include <list>
#include <algorithm>

using namespace std;

int main()
{
	list<int> l = { 1, 2, 0, 4, 5, 6, 7, 0, 9 };
	auto it = find(l.crbegin(), l.crend(), 0);

	cout << distance(it, l.crend()) << endl;
	return 0;
}

练习10.37

给定一个包含10 个元素的vector,将位置3到7之间的元素按逆序拷贝到一个list中。

#include <iostream>
#include <list>
#include <algorithm>
#include <vector>
#include <iterator>

using namespace std;

int main()
{
	vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	list<int> l;

	copy(v.crbegin() + 3, v.crbegin() + 8, back_inserter(l));

	for (auto i : l) std::cout << i << " ";
	cout << endl;
	return 0;
}

练习10.38

列出5个迭代器类别,以及每类迭代器所支持的操作。

  • 输入迭代器 : ==,!=,++,*,->
  • 输出迭代器 : ++,*
  • 前向迭代器 : ==,!=,++,*,->
  • 双向迭代器 : ==,!=,++,--,*,->
  • 随机访问迭代器 : ==,!=,<,<=,>,>=,++,--,+,+=,-,-=,*,->,iter[n]==*(iter[n])

练习10.39

list 上的迭代器属于哪类?vector呢?

  • list 上的迭代器是 双向迭代器
  • vector 上的迭代器是 随机访问迭代器

练习10.40

你认为 copy 要求哪类迭代器?reverse 和 unique 呢?

  • copy 需要两个输入迭代器,一个输出迭代器
  • reverse 需要双向迭代器
  • unique需要随机访问迭代器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据库运维】mysql备份恢复练习

目录 数据库备份&#xff0c;数据库为school&#xff0c;素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式&#xff0c;能够让该备份覆盖已有数据库而不需要手动删除原有数据库 5.直接将My…

【nnunet】个人数据训练心得

安装&#xff1a; pip install nnunetv2 ## 或者是把他下载下来&#xff0c;自行安装 git clone https://github.com/MIC-DKFZ/nnUNet.git cd nnUNet pip install -e . GitHub代码&#xff1a; GitHub - MIC-DKFZ/nnUNet 十项医学分割数据集&#xff1a; Medical Segmentati…

iptables防火墙详解

文章目录一、iptables概念1、防火墙基础1.1 防火墙概念1.2 Netfilter和iptables的区别2、Iptables的表、链结构2.1 规则链2.2 规则表2.3 规则表之间的顺序3、规则3.1 匹配条件3.2 处理动作二、iptables规则管理1、iptables规则操作1.1 iptables信息查询1.2 规则添加1.3 规则删除…

Linux系统【Centos7】设置防火墙教程

1. 查看防火墙状态 在终端输入以下命令&#xff1a; systemctl status firewalld 如果状态显示为“active”说明防火墙已经启动&#xff1b;如果状态显示为“inactive”说明防火墙没有启动。 2. 启动防火墙 在终端输入以下命令&#xff1a; systemctl start firewalld 3…

「ML 实践篇」回归系统:房价中位数预测

文章目录1. 项目分析1. 框架问题2. 性能指标2. 获取数据1. 准备工作区2. 下载数据3. 查看数据4. 创建测试集3. 数据探索1. 地理位置可视化2. 寻找相关性3. 组合属性4. 数据准备1. 数据清理2. Scikit-Learn 的设计3. 处理文本、分类属性4. 自定义转换器5. 特征缩放6. 流水线5. 选…

使用机器学习opencv看手相

摘要&#xff1a;本文介绍一种发明专利&#xff0c;使用opencv看手相。不是开玩笑&#xff0c;这是国际会议发表的正规文章2020 Fourth International Conference on Inventive Systems and Control (ICISC) 该项目设计并实现了一个python程序&#xff0c;以找出手掌颜色、手指…

嵌入式学深度学习:1、Pytorch框架搭建

嵌入式学深度学习&#xff1a;1、Pytorch框架搭建1、介绍2、Pytorch开发环境搭建2.1、查看GPU是否支持CUDA2.2、安装Miniconda2.3、使用Conda安装pytorch2.4、安装常用库3、简单使用验证1、介绍 深度学习是机器学习的一种&#xff0c;如下图&#xff1a; 目前深度学习应用场景…

探索五大机器学习技术及其应用

没有一种机器学习算法可以解决所有类型的机器学习问题。机器学习任务可能千差万别&#xff0c;算法的选择将取决于数据的大小、维数和稀疏性等因素。目标变量、数据的质量以及特征内部以及特征与目标变量之间存在的相互作用和统计关系。 在本文中&#xff0c;我将提供机器学习…

SSM整合

SSM整合1&#xff0c;SSM整合1.1 流程分析1.2 整合配置步骤1&#xff1a;创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步骤7:创建jdbc.properties步骤8:创建SpringMVC配置类步骤…

spring框架注解(纯注解)

Spring有哪些常用注解呢&#xff1f; Spring常用注解 Web: Controller&#xff1a;组合注解&#xff08;组合了Component注解&#xff09;&#xff0c;应用在MVC层&#xff08;控制层&#xff09;。 RestController&#xff1a;该注解为一个组合注解&#xff0c;相当于Contr…

c++类和对象

&#x1f646;&#x1f3fc;关注作者&#xff1a;玺子写代码 ✍️gitee&#xff1a;玺子写代码 目录&#x1f449;&#x1f3fb;类的定义&#x1f449;&#x1f3fd;类的两种定义方式&#x1f449;&#x1f3fc;类的访问限定符及封装&#x1f449;&#x1f3fd;访问限定符&…

通信协议-IIC协议

通信协议-IIC协议 简介 I2C 通讯协议 (Inter &#xff0d; Integrated Circuit) 是由 Phiilps 公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c; 可扩展性强。 物理层 物理连接如下图所示&#xff1a; 特点如下&#xff1a; 共用信号线、可挂载多…

政务服务一网通办建设方案(ppt)

政务审批 – 设计思路 “互联网政务服务”平台主要由互联网政务服务门户、政务服务管理平台、业务办理系统、政务服务数据共享平台及硬件支撑平台五部分构成。平台建设以硬件支撑平台为基础&#xff0c;其他各平台之间的业务流、信息流通过数据共享平台实现数据互联互通。政务审…

自己写gpt的软件教程-国内最好的chatgpt软件

GPT-3是一种非常强大的自然语言处理技术&#xff0c;可以为用户生成高质量的文本内容。虽然GPT-3最初是为英文而设计的&#xff0c;但是近年来&#xff0c;GPT-3在中文领域也变得越来越流行。在本篇教程中&#xff0c;我们将详细介绍如何在GPT-3中生成中文内容。 一、准备工作 …

西北乱跑娃 -- 全栈开发新手必看客户端与服务的关系

一、问题解析 对于一个全栈新手来说&#xff0c;熟悉全栈开发生命周期管理是非常重要的。没有对全栈开发生命周期管理的了解&#xff0c;会导致很难快速上岗。下面是一些有助于您理解全栈开发生命周期管理的提示。 首先&#xff0c;全栈开发生命周期管理是指从项目的规划、设…

Solidworks学习一

目录页面介绍&#xff1a;视图操作&#xff1a;实例圆柱&#xff1a;直线的绘制&#xff1a;草图的保存和不保存&#xff1a;绘制工具&#xff1a;切线弧&#xff1a;转换实体引用&#xff1a;交叉曲线&#xff1a;等距实体&#xff1a;移动复制&#xff1a;约束&#xff1a;约…

SpringCloud整合Feign基本使用及源码分析-02

又是美好的一天呀~ 个人博客地址&#xff1a; huanghong.top 往下看看~服务调用源码分析invokeexecuteAndDecodetargetRequest根据扩展点进行功能扩展服务调用源码分析 FeignClient实例为动态代理创建的对象&#xff0c;当进行服务调用FeignClient的接口方法就会被FeignInvocat…

ThreeJS-平行光物体投影(十九)

平行光源&#xff08;太阳光&#xff09; 关键代码&#xff1a; //平行光投射相机的属性 // directionalLight.shadow.camera.near 0.5; directionalLight.shadow.camera.far 500; directionalLight.shadow.camera.top 3; di…

画栋雕梁:定制投资体系4——持有、波动与卖出

接该系列的上一篇《配置仓位》&#xff0c;仓位配置完后的情况自是面对波动&#xff0c;然后就是持有跟踪直到卖出。持有之前提及建仓是以一年的预期赔率为标准&#xff0c;之后进入持有期&#xff0c;但持有周期可能小于一年&#xff0c;也可能远大于一年。我们在建仓时基于当…

[oeasy]python0125_汉字打印机_点阵式打字机_汉字字形码

汉字字形码 回忆上次内容 IBM 将 ASCII 扩展之后 规定了 一个字节的字符集并制作了 相应的字形库 这种显示模式和字符大小之下 中文该如何进入计算机世界呢&#xff1f;&#x1f914; 从打印机开始 原来的打印头 字型定死 中文印刷 落后于英文 中文打字机 就是一个梦 中…
最新文章