C++ Primer Plus第十六章复习题

1、考虑下面的 类声明

class RQ1
{
private:char * st;
public:RQ1(){st = new char [1]; strcpy(st,"");}RQ1(const RQ1 & rq){st = new char [strlen(rq.st)+1]; strcpy(st,rq.st);}~RQ1(){delete [] st};RQ & OPERATOR = (cosnt RQ &rq);
};

 将它转换为使用string对象的声明。那些方法不再需要显示定义?

答:

#include <string>
using namespace std;
class RQ1
{
private:string st;
public:RQ1() :st(""){}RQ1 (const char * s): st(s){}~RQ1() {};
};
不再需要显式复制构造函数、析构程序和赋值运算符,因为string对象提供了自己的内存管理功能。

2、在易于使用方面,指出string对象至少两个优于C-风格字符串的地方。

答:可以将一个string对象赋给另一个。string对象提供了自己的内存管理功能,所以一般不需要担心字符串超出存储容量。

3、编写一个函数,用string对象作为参数,将string对象转换为全部大写。

答:

#include <string>
#include <cctype>
using namespace std;
void ToUpper(string & str)
{
for (int i = 0; i < str.size(); i++)str[i] = toupper(str[i]);
}

4、从概念上或语法上说,下面哪个不是正确使用auto_ptr的方法?

auto_ptr<int> pia(new int [20]);
auto_ptr<string>(new string);
int rigue = 7;
auto_ptr<int>pr(&rigue);
auto_ptr db1 (new double);

答:

auto_ptr<int> pia= new int [20];// wrong,use with new,not new []
auto_ptr<string>(new string); // wrong,no name for pointer
int rigue = 7;
auto_ptr<int> (&rigue);// wrong,memory not allocated by new
auto _ptr dbl (new double);// wrong,omits <double>

5、如果可以生成一个存储高尔夫球棍(而不是数字)的栈,为何它(从概念上说)是一个坏的高尔夫袋子?

答:栈的LIFO特征意味着可能必须在到达所需要的球棍(club之前删除很多球棍。

6、为什么说对于逐洞记录高尔夫成绩来说,set容器是糟糕的选择?

答:集合将只存储每个值的一个铂贝,因此,5个5分将被存储为1个5分。

7、既然指针是一个迭代器,为什么STL设计人员为没有简单的使用指针来代替迭代器呢?

 答:使用迭代器使得能够使用接口类似于指针的对象遍历不以数组方式组织的数据,如双向链表中的数据。

8、为什么STL设计人员仅定义了迭代器基类,而使用继承来派生其他迭代器类型的类,并根据这些迭代器类来表示算法?

答:STL 方法使得可以将STL 函数用于指向常规数组的常规指针以及指向STL容器类的迭代器,因此提高了通用性。  

9、给出vector对象比常规数组方便的3个例子。

 答:可以将一个vector对象赋给另一个。vector管理自己的内存,
因此可以将元素插入到矢量中,并让它自动调整长度。使用at()方法,可以自动检查边界。

10、如果程序清单时使用list而不是vector实现的 ,则该程序的哪些部分是非法的?非法部分能够轻松修复吗?如果可以,如何修复呢?

答:这两个vector函数和random_shuffle()函数要求随机访问迭代器,而list对象只有双向迭代器。可以使用 list模板类的sort( )成员函数(参见附录G),而不是通用函数来排序,但没有与random_shuffe()等效的成员函数。然而,可以将链表复制到矢量中,然后打乱矢量,并将结果重新复制到链表中。

11、如果程序清单所示的函数符TooBig,下面的代码有何功能?赋给bo的是什么值?

bool bo = TooBig<int>(10)(15);

答:

  1. 使用 10 作为参数实例化 Comparator<int> 类型的对象。
  2. 使用 15 调用该对象的 operator(),并返回结果(false,因为 10 不大于 15)。
  3. 将返回的结果(false)赋值给 bool 类型的变量 bo

所以,赋给 bo 的值是 false

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

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

相关文章

Java技术深度解析:高级面试问题与精粹答案(一)

Java 面试问题及答案 问题1&#xff1a;请解释什么是Java虚拟机&#xff08;JVM&#xff09;以及它的作用是什么&#xff1f; 答案1&#xff1a; Java虚拟机&#xff08;JVM&#xff09;是一个可以执行Java字节码的虚拟计算机。它是一个抽象的计算机&#xff0c;能够通过软件…

【笔记】树(Tree)

一、树的基本概念 1、树的简介 之前我们都是在谈论一对一的线性数据结构&#xff0c;可现实中也有很多一对多的情况需要处理&#xff0c;所以我们就需要一种能实现一对多的数据结构--“树”。 2、树的定义 树&#xff08;Tree&#xff09;是一种非线性的数据结构&#xff0…

作物水文模型AquaCrop---用于评估作物对水的需求、灌溉计划和管理策略

AquaCrop是由世界粮食及农业组织&#xff08;FAO&#xff09;开发的一个先进模型&#xff0c;旨在研究和优化农作物的水分生产效率。这个模型在全球范围内被广泛应用于农业水管理&#xff0c;特别是在制定农作物灌溉计划和应对水资源限制方面显示出其强大的实用性。AquaCrop 不…

如何在海豚调度器自动监测报表是否跑出数据

在数据仓库报表开发时,有的报表依赖的表多,虽然在海豚调度任务上是跑成功,但实际上没有跑出数据来。开发人员负责的任务和表越来越多,每天去手动检查费时费力,不去理睬默认是成功的,等到业务或产品发现问题时,又给人一种不专业不负责的感觉。 比较好的方式是用代码进行自…

Python知识点复习

文章目录 Input & OutputVariables & Data typesPython字符串重复&#xff08;字符串乘法&#xff09;字符串和数字连接在一起print时&#xff0c;要强制类型转换int为str用input()得到的用户输入&#xff0c;是str类型&#xff0c;如果要以int形式计算的话&#xff0c…

SkyWalking 介绍及部署

1、SkyWalking简介2、SkyWalking的搭建 2.1 部署Elasticsearch2.2 部署SkyWalking-Server2.3 部署SkyWalking-UI3、应用接入 3.1 jar包部署方式3.2 dockerfile方式3.3 DockerFile示例4、SkyWalking UI 界面说明 4.1 仪表盘 4.1.1 APM &#xff08;1&#xff09;全局维度&#x…

UBUNTU22.04无法安装nvidia-driver-550 依赖于 nvidia-dkms-550 (<= 550.54.15-1)

类似的报错信息&#xff0c;就是卡在了nvidia-dkms-550无法安装 Loading new nvidia-550.40.07 DKMS files… Building for 6.5.0-15-generic Building for architecture x86_64 Building initial module for 6.5.0-15-generic ERROR: Cannot create report: [Errno 17] File e…

前端canvas项目实战——在线图文编辑器(十):小地图MiniMap(上)

目录 前言一、 效果展示二、 实现步骤0. 行动前的思考1. 为小地图更新「背景图」2. 为小地图更新「滑动窗口」2.1 获取新的滑动窗口「宽高」2.2 获取新的滑动窗口「位置」3. 为小地图更新「遮罩」后记前言 上一篇博文中,我们引入了「逻辑画布」的概念,让整个工具的页面看起来…

JPA 3万字面试宝典

目录 什么是JPA? JPA和Hibernate有什么区别? 什么是ORM(对象关系映射)? 什么是Entity?

【机器学习】在电子商务(淘*拼*京*—>抖)的应用分析

机器学习与大模型&#xff1a;电子商务的新引擎 一、电子商务的变革与挑战二、机器学习与大模型的崛起三、机器学习与大模型在电子商务中的应用实践个性化推荐精准营销智能客服库存管理与商品定价 四、总结与展望 随着互联网的飞速发展&#xff0c;电子商务已经成为我们生活中不…

NDIS小端口驱动(四)

NDIS中断相关 1. 注册和取消注册中断&#xff1a; 微型端口驱动程序调用 NdisMRegisterInterruptEx 来注册中断。 驱动程序分配并初始化 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 结构&#xff0c;以指定中断特征和函数入口点&#xff0c;驱动程序将结构传递给 NdisMRegister…

【三剑客和正则表达式】

文章目录 学习目标一、什么是三剑客1.三剑客grep2.三剑客sed3.三剑客awk4.正则过滤例子15.正则过滤例子2 总结 学习目标 1.学会使用 grep 2.学会使用 sed 3.学会使用 awk 4.学会使用正则表达式一、什么是三剑客 正则三剑客&#xff1a;grep sed awk 1.三剑客grep # 擅长过滤…

【MySQL精通之路】查询优化器的使用(8)

MySQL通过影响查询计划评估方式的系统变量、可切换优化、优化器和索引提示以及优化器成本模型提供优化器控制。 服务器在column_statistics数据字典表中维护有关列值的直方图统计信息&#xff08;请参阅第10.9.6节“Optimizer统计信息”&#xff09;。与其他数据字典表一样&am…

#Ethereum 现货ETF 问题汇总 转

专题&#xff1a; #Ethereum 现货ETF 问题汇总&#xff0c;包括了多数小伙伴们的疑问&#xff0c;有任何忽略请留言给我&#xff0c;我会补充。 1. #ETH 现货ETF何时公布&#xff1f; 一般来说会在北京时间的5月24日凌晨2点至4点之间&#xff0c;不排除稍微延后到凌晨6点的可能…

基于大语言模型的应用

在AI领域&#xff0c;大语言模型已成为备受瞩目的焦点&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;其应用愈发广泛。BLM作为一种多任务语言建模方法&#xff0c;旨在构建一个具备多功能的强大模型。在给定文本和查询条件下&#xff0c;该模型能…

【深度学习】YOLOv8训练,交通灯目标检测

文章目录 一、数据处理二、环境三、训练 一、数据处理 import traceback import xml.etree.ElementTree as ET import os import shutil import random import cv2 import numpy as np from tqdm import tqdmdef convert_annotation_to_list(xml_filepath, size_width, size_he…

海山数据库(He3DB)代理ProxySQL使用详解:(二)功能实测

读写分离实测 ProxySQL官方demo演示了三种读写分离的方式&#xff1a;使用不同的端口进行读写分离、使用正则表达式进行通用的读写分离、使用正则和digest进行更智能的读写分离。最后一种是针对特定业务进行的优化调整&#xff0c;也可将其归结为第二种方式&#xff0c;下边分…

MySQL备份与日志练习

1、创建对mysql数据库test1的定时备份任务&#xff0c;频率是每周一的2点 create database test1;crond -e0 2 * * 1 mysqldump -u root -pAdmin123 --databases test1 > /opt/test1.sql2、test1中有t1、t2、t3三张表&#xff0c;要求只备份t2这张表 mysqldump -u root -pA…

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 一、简单介绍 二、单变量非线性变换 三、自…

知识图谱数据预处理笔记

知识图谱数据预处理笔记 0. 引言1. 笔记1-1. \的转义1-2. 特殊符号的清理1-3. 检查结尾是否正常1-4. 检查<>是否存在1-5. 两端空格的清理1-6. 检查object内容长时是否以<开始 0. 引言 最近学习知识图谱&#xff0c;发现数据有很多问题&#xff0c;这篇笔记记录遇到的…