![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c/c++及数据结构
文章平均质量分 88
读书笔记
fuluoyide312
《如何写出无法维护的代码》
展开
-
c++ primer中文版第五版作业第十九章
指向成员函数的指针的类型包含所指向的类的类型,并且在调用时需要提供类的对象,同时指向成员函数的指针和成员函数名之间不存在自动转换规则。合法,pmf是一个成员函数指针,它指向Screen类的常量成员函数,该函数不接受参数,返回一个char类型数据.指向数据成员的指针的类型除了成员的类型外,还应该包括类的类型。合法,pmf被赋值为Screen类内不接受参数并返回char类型值的那个get成员函数。想要使用基类的引用或指针使用派生类的非虚函数操作的时候。1 成功,因为pa的类型是目标类型的公有基类。原创 2024-03-08 21:29:12 · 881 阅读 · 0 评论 -
c++ primer中文版第五版作业第十八章
当mem1是一个string时程序因为更特例化的原因,会调用string中定义的swap版本,而int是内置类型,内置类型没有特定版本的swap,所以会调用std::swap。因为派生类的名字将隐藏基类的同名成员,所以MI不加前缀限定符的print函数只有接受std::vector参数的版本,而42无法隐式转换为该类型,所以调用失败。:使特定的命名空间中所有的名字都可见,这些名字一般被看作是出现在最近的外层作用域中,如果遇到成员冲突的情况,需要使用作用域运算符指明所需的版本。构造函数的执行顺序是。原创 2024-03-08 21:26:00 · 1190 阅读 · 0 评论 -
c++ primer中文版第五版作业第十七章
没看懂意思,如果只是单纯要排除某些指定的单词的话,在匹配之后输出之前判断一下这个单词是否是要排除的那些单词之一即可,但这并不是一个好办法。一行的长度超过传递给getline的字符数组的大小时,会导致输入流的条件状态被置为错误,导致后续读入失败。如果使用[^c]ei进行初始化,那么此模式只能匹配首字母不是c的三个字母组成的单词,其余单词都不能匹配。如果循环内定义b、e,那么每步循环都会创建一个新引擎及分布对象,从而每步循环都会生成相同的值。版本稍微复杂一点,自己定义一个类的版本更自由。原创 2024-03-08 20:50:42 · 1081 阅读 · 0 评论 -
c++ primer中文版第五版作业第十六章
特例化不影响函数匹配,它并不是为编译器进行函数匹配提供一个新的选择,而是为模版的一个特殊实例提供不同于原模版的特殊定义,本质上是接管了编译器在完成函数匹配后的部分实例化工作。如此一来,非可变参数版本就不在可变参数版本的作用域中,那么递归调用的将永远是可变参数版本的实例,即使res是空包,调用将依然进行下去,无法结束递归。用函数实参来确定模板实参的过程被称为模板实参推断,在模板实参推断的过程中,编译器使用函数调用中的实参类型来寻找模板实参,从而生成对应的模板实例。=而不是<,可减少你的算法适用容器的限制。原创 2024-03-08 20:46:46 · 1274 阅读 · 0 评论 -
c++ primer中文版第五版作业第十五章
而第二次vector由于保存的是基类的只能指针,所以指向的对象既有可能是基类,也有可能是派生类,如此一来在调用net_price时就可以调用到派生类的函数版本。编译器只有在发现类不包含任何构造函数的情况下才会替我们生成一个合成的默认构造函数,因为Disc_quote定义了其它的构造函数,所以不会自动生成一个合成的默认构造函数,如此一来它的派生类Bulk_quote也不能生成合成的默认构造函数。如果派生类以公有或者受保护的方式继承,则派生类的派生类的成员和友元可以使用派生类向其基类的类型转换。原创 2024-03-08 20:39:29 · 994 阅读 · 0 评论 -
c++ primer中文版第五版作业第十四章
的,可以避免被默认转换成bool,导致意料之外的运算结果。此类型转换可以用在条件判断处,而explicit的类型转换运算符用在条件判断时可以被隐式的执行。这个输入运算符如果仍然给定上个练习的输入,那么第一个输入仍将得到合法的对象,而第二个输入会得到非法的对象。类的信息是雇员的名字、年纪、收入、电话,算术运算符对其没有明确的意义,故不应该含有其他算术运算符。因为重载的函数调用运算符可接受的参数是不一定的,所以它应该接受几个运算对象不确定。此重载的输入运算符没有判断输入失败的情况,在输入失败时,原创 2024-03-08 20:09:01 · 716 阅读 · 0 评论 -
c++ primer中文版第五版作业第十三章
调用获得hp2的右值引用,HasPtr类的赋值运算符是传值类型的形参,所以调用移动构造函数构造rhs,完成后rhs内ps及i均为原hp2内的值,而hp2内ps指向NULL。拷贝构造函数的第一个参数必须时自身类类型的引用,否则为了调用拷贝构造函数,我们必须拷贝它的实参,但为了拷贝实参,我们又需要调用拷贝构造函数,如此无线循环,调用就不会成功。右值引用只能绑定到一个即将要销毁的对象上,因此可以自由的移动其源资源。类都未定义自己的拷贝控制成员,所以它们都会使用合成的版本,在合成版本的拷贝控制成员中,这两个类的。原创 2024-03-08 20:00:44 · 654 阅读 · 0 评论 -
c++ primer中文版第五版作业第十二章
这样操作将另一个独立的智能指针也绑定到了get()返回的指针上,由于p和ptr是相互独立创建的,因此各自的引用计数都是1.当process函数结束时,ptr被销毁,这会导致ptr所指向的内存被释放,从而让p成为空悬指针。正确,利用智能指针p创建一个临时量,再赋予process的形参ptr,这时候智能指针的引用计数变为2,在函数运行结束后,ptr被销毁,智能指针的引用计数变为1。int型指针q指向堆中动态分配的一个初始值为42的int型对象,int型指针r指向堆中动态分配的一个初始值为100的int型对象。原创 2024-03-08 19:46:30 · 836 阅读 · 0 评论 -
c++ primer中文版第五版作业第十一章
如果关键字0在m中,则将其对应的值修改为1.如果关键字0不在m中,则向m中添加一个关键字为0,对应值为0的元素,然后将此元素的值修改为1.书中程序处理了这种情况的,如果文件中的某一行包含一个关键字和一个空格,那么这一行的转换规则不会录入map。而vector中的元素是按它们在容器中的位置来顺序保存和访问的。如果v中含有元素,则将v[0]赋值1.如果v是空的,则会产生严重错误。会返回相同的迭代器,迭代器会指向第一个不影响排序的关键字插入位置,而。中含有该关键字,那么下标操作会改变该关键字对应的值,而。原创 2024-03-08 19:32:46 · 1482 阅读 · 0 评论 -
c++ primer中文版第五版作业第十章
的参数个数就是X+1个,即除了A自身外,其他参数与A的形参一一对应。这些参数中,有些是占位符(_n),另外一些来自所处函数的局部变量。算法只操作迭代器,由迭代器真正实现对容器的访问,因此算法根本就不知道容器的存在,所以是否改变容器的大小完全是迭代器的选择与责任。,所以本题中和的初始是整型,则会发生双精度浮点数向整型的转换,损失小数点后的部分。,即实际工作函数A,返回供算法调用的新的可调用对象B。的前两个参数要求输入迭代器,第三个参数要求输出迭代器。的第三个参数是和的初值,它还决定了函数的。原创 2024-03-08 19:19:59 · 919 阅读 · 0 评论 -
c++ primer中文版第五版作业第九章
而接受两个迭代器创建拷贝的构造函数,容器类型则不必相同,元素类型可转换即可,可以拷贝指定的元素范围。插入、删除操作并未影响迭代器的有效性,同时迭代器不支持加减运算,只能使用自增。不需要,因为一个链表占用的内存空间总是与它当前保存的的元素所需的空间相等。必须是相同类型的容器,保存相同类型的元素,元素类型必须支持所需的运算符。不合法,实参的求值顺序依赖编译器,若先自增,则程序不合本意。指向同一个容器中的元素或尾元素之后的位置,可以反复递增。不分配新的内存空间的情况下可以保存的最多的元素,原创 2024-03-08 19:14:05 · 860 阅读 · 0 评论 -
c++ primer中文版第五版作业第八章
因为每个人的电话条目数量不同,所以应该缺省初始化后在程序中设置人名,并逐个添加电话。流崩溃,IO操作失败或者遇到文件结束符等。表明循环中不会改变这些项的值,表示引用可以避免拷贝。原创 2024-03-08 12:47:47 · 559 阅读 · 0 评论 -
c++ primer中文版第五版作业第七章
一致,所以这里会先初始化。原创 2024-03-08 11:05:38 · 634 阅读 · 0 评论 -
c++ primer中文版第五版作业第六章
不需要改变形参的值时,应该是常量引用。在其他情况下可以使用值传递的方式,而无须使用引用传递,例如求整数的绝对值或者阶乘的程序。的初始值,形参用于函数的声明与定义,实参用于函数调用时用来初始化形参。当函数的目的是交换两个参数的内容时应该使用引用类型的形参。的原因可能有两个,一是用户终止了输入,二是用户输入的内容正好与。合法,返回array数组index索引的元素的引用。对象时,为了避免拷贝很长的字符串,应该使用引用类型。的条件为假,输出错误信息,这与程序的原意是不相符的。,拷贝消耗低,所以不需要用引用类型。原创 2024-03-06 16:32:39 · 801 阅读 · 0 评论 -
c++ primer中文版第五版作业第五章
用花括号括起来的语句和声明序列等就是块,在语法上需要一条语句而逻辑上需要多条语句时,就会用到块。单独的分号就是一条空语句,在语法上需要一条语句而逻辑上不需要时,会用到空语句。原文中ix超出其作用域,在if语句中是。条件部分使用的变量需要定义在循环体外。条件部分使用的变量需要定义在循环体外。原文中,for循环缺少初始化部分。读入两个整形变量并输出它们的和。同时自增,无法跳出循环。代码的可读性降低了。原创 2024-03-05 15:37:07 · 406 阅读 · 0 评论 -
c++ primer中文版第五版作业第四章
前置版本首先将运算对象加1(或减1),然后把改变后的对象作为求值结果。后置版本也将运算对象加1(或减1),但是求值结果是运算对象改变之前那个值的副本。而如果运算对象彼此无关,它们既不会改变同一对象的状态也不执行IO任务,则函数的调用顺序不受限制。在位运算符中,运算符~高于原创 2024-03-01 11:19:20 · 1061 阅读 · 0 评论 -
c++ primer中文版第五版作业第三章
仓库地址1.cpp2.cpp3.cpp4.cpp5.cpp6.cpp7.cpp3.23-2-1.cpp3-2-2.cpp3.3 string类的输入运算符会忽略空白,getline函数会存储空白。3-4-1.cpp3-4-2.cpp3.53-5-1.cpp3-5-2.cpp3.63.7一样的3.83-8-1.cpp3-8-2.cpp3.9 不合法,使用下标访问空string的行为未定义。3.11合法,的类型是。3.153.163.173原创 2024-02-29 15:59:21 · 1095 阅读 · 0 评论 -
c++ primer中文版第五版作业第二章
类型int、short、long和long long都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型,例如unsigned long。所以说,float和double都是不能用来表示精确的类型的.金额必须是完全精确的计算, 故不能使用double或者float.本金和付款使用最大的带符号整型表示.1. auto类型说明符用编译器计算变量的初始值来推断其类型,而decltype虽然也让编译器分析表达式并得到它的类型,但是不实际计算表达式的值。原创 2024-02-28 12:36:48 · 885 阅读 · 0 评论 -
c++ primer中文版第五版作业第一章
是程序员可能忘记在循环体(statement)内作用条件判断语句(condition),造成无限循环;如果输入的所有值都相等,本节程序会输出该值出现多少次。如果没有重复值,输出会是每个值出现一次。是规范、整洁,不易漏掉作用条件判断(condition)的表达式(expression),while 循环适合循环次数不确定的情景;for 循环适合循环次数事先已知。for循环完成从-100累加到100,sum的终值是0。合法,因为第二三行缺乏输出运算符的左侧运算对象。原创 2023-04-21 15:56:39 · 255 阅读 · 0 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第八章)
数据结构与算法分析原创 2022-08-31 21:19:19 · 749 阅读 · 0 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第七章)
文章目录7.17.27.37.47.57.67.77.87.97.107.117.127.137.147.157.1#!/bin/bash#形如7-1.sh 3 1 4 1 5 9 2 6 5的输入即可排序array=(`echo $@`)length=${#array[@]}for((i=0;i<$length;i++))do Tmp=${array[i]} j=$i while [ $j -gt 0 ]&&[ ${arr原创 2021-08-30 21:35:35 · 1820 阅读 · 0 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第六章)
文章目录6.16.26.36.46.1待完善6.2static void PercolateDown(int index,ElementType Data[],int Length){ ElementType Temp; int i,Child; for(i=index;i*2<=Length;i=Child) { Child=i*2; if(Chi原创 2021-07-21 10:43:07 · 2129 阅读 · 0 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第五章)
文章目录5.15.25.35.45.55.65.75.1图片截自答案(非自己画的)2.3.4.将会插入失败5.2待完善5.3待完善5.4假设p为进行rehash时的装填因子,如果p接近或者等于1.0的话,那么一连串的insert和delete操作就会导致反复的rehash。如果p为232\over332,这时假设原tablesize是300,拥有elements200,在进行了100次delete后才需要调用rehash。如果tablesize是150,拥有eleme原创 2021-06-30 22:25:16 · 1252 阅读 · 3 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第三章)(3.18~3.26)
3.18stack.h#ifndef _Stack_H#define _Stack_H#define symbolsize 10struct Node;typedef char *ElementType;typedef struct Node *PtrToNode;typedef PtrToNode Stack;int IsEmpty(Stack S);Stack CreateStack(void);void MakeEmpty(Stack S);void Push(Elemen原创 2020-07-01 23:17:09 · 1022 阅读 · 0 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第三章)(3.11~3.17)
3.11list.h#ifndef _List_H#define _List_Hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;typedef int ElementType;List MakeEmpty(List L); //List L is unusedint IsEmpty(List L);int IsLast(Position P,L原创 2020-07-01 22:51:42 · 675 阅读 · 0 评论 -
数据结构与算法分析--c语言描述练习自答(第三章)(3.1~3.10)
list.h#ifndef _List_H#define _List_Hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;typedef int ElementType;List MakeEmpty(List L); //List L is unusedint IsEmpty(List L);int IsLast(Position P,List L原创 2020-07-01 22:27:48 · 1349 阅读 · 0 评论 -
数据结构与算法分析--c语言描述练习自答(第二章)
2.72.7.h#ifndef _2_7_h#define _2_7_h#include <time.h>extern int RandInt(int i,int j);clock_t start,finish;extern void Substitution(int A[],int N);#endifRandInt.c#include <stdlib.h>#include <time.h>int RandInt(int i,int j){.原创 2020-06-04 11:24:58 · 1392 阅读 · 3 评论 -
数据结构与算法分析--c语言描述练习自答(第一章)
原创 2020-06-04 11:06:24 · 605 阅读 · 0 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第四章)(1-20)
目录前言练习前言章节内部分伪代码使用shell脚本实现1。所有代码都在码云。每章单独一个目录2,目录内正文的某些小节也有代码实现3。#include的本地文件有可能并不在当前目录下,编译失败时请检查。练习AG、H、I、L、M、K以节点B为例AD、EC13 4有N个节点,每个节点有两个指针,总共2N2N2N个。其中除了根节点每个节点都有一个从其父节点指向自己的指针N−1N-1N−1,那么剩余的2N−(N−1)=N+12N-(N-1)=N+12N−(N原创 2020-12-02 15:36:45 · 925 阅读 · 5 评论 -
数据结构与算法分析--c语言描述(原书第二版)练习自答(第四章)(21-46)
题目212221O(loglogNlog log NloglogN)使8比特高度计数器溢出的AVL树的高度将超过25522原创 2020-12-18 14:45:48 · 928 阅读 · 0 评论