自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (1)
  • 收藏
  • 关注

原创 c++ primer中文版第五版作业第十九章

指向成员函数的指针的类型包含所指向的类的类型,并且在调用时需要提供类的对象,同时指向成员函数的指针和成员函数名之间不存在自动转换规则。合法,pmf是一个成员函数指针,它指向Screen类的常量成员函数,该函数不接受参数,返回一个char类型数据.指向数据成员的指针的类型除了成员的类型外,还应该包括类的类型。合法,pmf被赋值为Screen类内不接受参数并返回char类型值的那个get成员函数。想要使用基类的引用或指针使用派生类的非虚函数操作的时候。1 成功,因为pa的类型是目标类型的公有基类。

2024-03-08 21:29:12 878

原创 c++ primer中文版第五版作业第十八章

当mem1是一个string时程序因为更特例化的原因,会调用string中定义的swap版本,而int是内置类型,内置类型没有特定版本的swap,所以会调用std::swap。因为派生类的名字将隐藏基类的同名成员,所以MI不加前缀限定符的print函数只有接受std::vector参数的版本,而42无法隐式转换为该类型,所以调用失败。:使特定的命名空间中所有的名字都可见,这些名字一般被看作是出现在最近的外层作用域中,如果遇到成员冲突的情况,需要使用作用域运算符指明所需的版本。构造函数的执行顺序是。

2024-03-08 21:26:00 1187

原创 c++ primer中文版第五版作业第十七章

没看懂意思,如果只是单纯要排除某些指定的单词的话,在匹配之后输出之前判断一下这个单词是否是要排除的那些单词之一即可,但这并不是一个好办法。一行的长度超过传递给getline的字符数组的大小时,会导致输入流的条件状态被置为错误,导致后续读入失败。如果使用[^c]ei进行初始化,那么此模式只能匹配首字母不是c的三个字母组成的单词,其余单词都不能匹配。如果循环内定义b、e,那么每步循环都会创建一个新引擎及分布对象,从而每步循环都会生成相同的值。版本稍微复杂一点,自己定义一个类的版本更自由。

2024-03-08 20:50:42 1079

原创 c++ primer中文版第五版作业第十六章

特例化不影响函数匹配,它并不是为编译器进行函数匹配提供一个新的选择,而是为模版的一个特殊实例提供不同于原模版的特殊定义,本质上是接管了编译器在完成函数匹配后的部分实例化工作。如此一来,非可变参数版本就不在可变参数版本的作用域中,那么递归调用的将永远是可变参数版本的实例,即使res是空包,调用将依然进行下去,无法结束递归。用函数实参来确定模板实参的过程被称为模板实参推断,在模板实参推断的过程中,编译器使用函数调用中的实参类型来寻找模板实参,从而生成对应的模板实例。=而不是<,可减少你的算法适用容器的限制。

2024-03-08 20:46:46 1271

原创 c++ primer中文版第五版作业第十五章

而第二次vector由于保存的是基类的只能指针,所以指向的对象既有可能是基类,也有可能是派生类,如此一来在调用net_price时就可以调用到派生类的函数版本。编译器只有在发现类不包含任何构造函数的情况下才会替我们生成一个合成的默认构造函数,因为Disc_quote定义了其它的构造函数,所以不会自动生成一个合成的默认构造函数,如此一来它的派生类Bulk_quote也不能生成合成的默认构造函数。如果派生类以公有或者受保护的方式继承,则派生类的派生类的成员和友元可以使用派生类向其基类的类型转换。

2024-03-08 20:39:29 990

原创 c++ primer中文版第五版作业第十四章

的,可以避免被默认转换成bool,导致意料之外的运算结果。此类型转换可以用在条件判断处,而explicit的类型转换运算符用在条件判断时可以被隐式的执行。这个输入运算符如果仍然给定上个练习的输入,那么第一个输入仍将得到合法的对象,而第二个输入会得到非法的对象。类的信息是雇员的名字、年纪、收入、电话,算术运算符对其没有明确的意义,故不应该含有其他算术运算符。因为重载的函数调用运算符可接受的参数是不一定的,所以它应该接受几个运算对象不确定。此重载的输入运算符没有判断输入失败的情况,在输入失败时,

2024-03-08 20:09:01 713

原创 c++ primer中文版第五版作业第十三章

调用获得hp2的右值引用,HasPtr类的赋值运算符是传值类型的形参,所以调用移动构造函数构造rhs,完成后rhs内ps及i均为原hp2内的值,而hp2内ps指向NULL。拷贝构造函数的第一个参数必须时自身类类型的引用,否则为了调用拷贝构造函数,我们必须拷贝它的实参,但为了拷贝实参,我们又需要调用拷贝构造函数,如此无线循环,调用就不会成功。右值引用只能绑定到一个即将要销毁的对象上,因此可以自由的移动其源资源。类都未定义自己的拷贝控制成员,所以它们都会使用合成的版本,在合成版本的拷贝控制成员中,这两个类的。

2024-03-08 20:00:44 634

原创 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 831

原创 c++ primer中文版第五版作业第十一章

如果关键字0在m中,则将其对应的值修改为1.如果关键字0不在m中,则向m中添加一个关键字为0,对应值为0的元素,然后将此元素的值修改为1.书中程序处理了这种情况的,如果文件中的某一行包含一个关键字和一个空格,那么这一行的转换规则不会录入map。而vector中的元素是按它们在容器中的位置来顺序保存和访问的。如果v中含有元素,则将v[0]赋值1.如果v是空的,则会产生严重错误。会返回相同的迭代器,迭代器会指向第一个不影响排序的关键字插入位置,而。中含有该关键字,那么下标操作会改变该关键字对应的值,而。

2024-03-08 19:32:46 1474

原创 c++ primer中文版第五版作业第十章

的参数个数就是X+1个,即除了A自身外,其他参数与A的形参一一对应。这些参数中,有些是占位符(_n),另外一些来自所处函数的局部变量。算法只操作迭代器,由迭代器真正实现对容器的访问,因此算法根本就不知道容器的存在,所以是否改变容器的大小完全是迭代器的选择与责任。,所以本题中和的初始是整型,则会发生双精度浮点数向整型的转换,损失小数点后的部分。,即实际工作函数A,返回供算法调用的新的可调用对象B。的前两个参数要求输入迭代器,第三个参数要求输出迭代器。的第三个参数是和的初值,它还决定了函数的。

2024-03-08 19:19:59 915

原创 c++ primer中文版第五版作业第九章

而接受两个迭代器创建拷贝的构造函数,容器类型则不必相同,元素类型可转换即可,可以拷贝指定的元素范围。插入、删除操作并未影响迭代器的有效性,同时迭代器不支持加减运算,只能使用自增。不需要,因为一个链表占用的内存空间总是与它当前保存的的元素所需的空间相等。必须是相同类型的容器,保存相同类型的元素,元素类型必须支持所需的运算符。不合法,实参的求值顺序依赖编译器,若先自增,则程序不合本意。指向同一个容器中的元素或尾元素之后的位置,可以反复递增。不分配新的内存空间的情况下可以保存的最多的元素,

2024-03-08 19:14:05 857

原创 c++ primer中文版第五版作业第八章

因为每个人的电话条目数量不同,所以应该缺省初始化后在程序中设置人名,并逐个添加电话。流崩溃,IO操作失败或者遇到文件结束符等。表明循环中不会改变这些项的值,表示引用可以避免拷贝。

2024-03-08 12:47:47 556

原创 c++ primer中文版第五版作业第七章

一致,所以这里会先初始化。

2024-03-08 11:05:38 631

原创 c++ primer中文版第五版作业第六章

不需要改变形参的值时,应该是常量引用。在其他情况下可以使用值传递的方式,而无须使用引用传递,例如求整数的绝对值或者阶乘的程序。的初始值,形参用于函数的声明与定义,实参用于函数调用时用来初始化形参。当函数的目的是交换两个参数的内容时应该使用引用类型的形参。的原因可能有两个,一是用户终止了输入,二是用户输入的内容正好与。合法,返回array数组index索引的元素的引用。对象时,为了避免拷贝很长的字符串,应该使用引用类型。的条件为假,输出错误信息,这与程序的原意是不相符的。,拷贝消耗低,所以不需要用引用类型。

2024-03-06 16:32:39 801

原创 c++ primer中文版第五版作业第五章

用花括号括起来的语句和声明序列等就是块,在语法上需要一条语句而逻辑上需要多条语句时,就会用到块。单独的分号就是一条空语句,在语法上需要一条语句而逻辑上不需要时,会用到空语句。原文中ix超出其作用域,在if语句中是。条件部分使用的变量需要定义在循环体外。条件部分使用的变量需要定义在循环体外。原文中,for循环缺少初始化部分。读入两个整形变量并输出它们的和。同时自增,无法跳出循环。代码的可读性降低了。

2024-03-05 15:37:07 406

原创 c++ primer中文版第五版作业第四章

前置版本首先将运算对象加1(或减1),然后把改变后的对象作为求值结果。后置版本也将运算对象加1(或减1),但是求值结果是运算对象改变之前那个值的副本。而如果运算对象彼此无关,它们既不会改变同一对象的状态也不执行IO任务,则函数的调用顺序不受限制。在位运算符中,运算符~高于

2024-03-01 11:19:20 1038

原创 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 1094

原创 c++ primer中文版第五版作业第二章

类型int、short、long和long long都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型,例如unsigned long。所以说,float和double都是不能用来表示精确的类型的.金额必须是完全精确的计算, 故不能使用double或者float.本金和付款使用最大的带符号整型表示.1. auto类型说明符用编译器计算变量的初始值来推断其类型,而decltype虽然也让编译器分析表达式并得到它的类型,但是不实际计算表达式的值。

2024-02-28 12:36:48 872

原创 c++ primer中文版第五版作业第一章

是程序员可能忘记在循环体(statement)内作用条件判断语句(condition),造成无限循环;如果输入的所有值都相等,本节程序会输出该值出现多少次。如果没有重复值,输出会是每个值出现一次。是规范、整洁,不易漏掉作用条件判断(condition)的表达式(expression),while 循环适合循环次数不确定的情景;for 循环适合循环次数事先已知。for循环完成从-100累加到100,sum的终值是0。合法,因为第二三行缺乏输出运算符的左侧运算对象。

2023-04-21 15:56:39 241

原创 数据结构与算法分析--c语言描述(原书第二版)练习自答(第八章)

数据结构与算法分析

2022-08-31 21:19:19 745

原创 威联通nas利用calibre-web搭建个人数字图书管理系统

calibre是一个印度大佬的开源作品,它主要用来管理电子书。而calibre-web是一个github上的项目,它以calibre的数据库目录为基础,实现利用浏览器查看管理书籍的功能。因为我有一台威联通的ts-453dmini,所以想来搭建一个图书管理系统,目的是在手机、平板或者电脑上都可以通过浏览器查看、下载、管理我存在nas上的电子书。大概完成的效果就是这样要达到这个目的,我们需要分为两步,第一步在nas创建calibre数据库目录,并且可以方便电子书的添加管理。第二步,安装calibre-web实

2022-05-23 22:46:09 6945

原创 运行于linux终端的c语言编写的贪食蛇详解(游戏逻辑篇)

文章目录采用技术初期规划代码实现预想的数据结构数据存储代码实现采用技术图形化采用curses库,存储存档及得分榜采用ndbm库,利用groff编写manpage,编译及安装采用make。初期规划大体规划如下:  由命令行启动游戏,打印版本信息、帮助信息、usage信息及清空得分榜由相应的命令行参数完成。如果不带参数则直接启动游戏。  游戏将有两个界面,即主界面和游戏界面。主界面:    主界面将要完成开启新游戏、载入存档和删除存档的任务。及循环显示得分榜。游戏界面:    主要

2021-11-25 16:51:40 4481

原创 数据结构与算法分析--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 1799

原创 数据结构与算法分析--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 2118

原创 数据结构与算法分析--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 1249 3

原创 lua程序设计(第四版)练习答案自做(第二十五章)

文章目录25.125.225.325.425.525.625.725.825.1#!/usr/bin/luafunction getvarvalue(...) local co=... if type(co)=="thread" then local name,level,isenv=select(2,...) local value local found=false

2021-05-11 21:28:20 137

原创 lua程序设计(第四版)练习答案自做(第三十一章)

文章目录31.131.2和31.331.431.531.1#include <stdarg.h>#include <stdlib.h>#include <lua.h>#include <lauxlib.h>#include <limits.h>#define BITS_PER_WORD (CHAR_BIT*sizeof(unsigned int))#define I_WORD(i) ((unsigned int)(i)/BITS_P

2021-04-20 22:45:57 136

原创 lua程序设计(第四版)练习答案自做(第三十章)

文章目录30.130.230.330.430.530.630.1#include <stdio.h>#include <lua.h>#include <lualib.h>#include <lauxlib.h>int filter(lua_State *L){ int index=1; luaL_checktype(L,1,LUA_TTABLE); luaL_checktype(L,2,LUA_TFUNCTION); int len=lu

2021-04-15 20:57:06 120

原创 lua程序设计(第四版)练习答案自做(第二十九章)

文章目录29.129.229.329.429.529.629.1static int summation(lua_State *L){ int parnum; double sum=0.0; parnum=lua_gettop(L); for(int i=1;i<=parnum;i++) { sum+=luaL_checknumber(L,i); } lua_pushnumber(L,sum); return 1;}29.2static int pack(lua_St

2021-04-12 21:49:26 145

原创 lua程序设计(第四版)练习答案自做(第二十八章)

文章目录28.128.228.328.1#include <stdio.h>#include <stdlib.h>#include <lua.h>#include <lualib.h>#include <lauxlib.h>void error(lua_State *L,const char *fmt,...){ va_list argp; va_start(argp,fmt); vfprintf(stderr,fmt,arg

2021-04-09 20:17:34 215

原创 lua程序设计(第四版)练习答案自做(第二十七章)

文章目录27.127.227.327.427.1#include <stdio.h>#include <string.h>#include "lua.h"#include "lauxlib.h"#include "lualib.h"int main(void){ char buff[256]; int error; lua_State *L=luaL_newstate(); luaL_openlibs(L); while(fgets(buff,sizeof

2021-04-07 22:16:26 157

原创 lua程序设计(第四版)练习答案自做(第十六章)

文章目录16.116.216.316.416.1#!/usr/bin/luafunction loadwithprefix(prefix,main) if type(main)=="function" then local t={} t[1]=prefix for w in main do t[#t+1]=w end return load(table.concat(t)) else return load(prefix..main) endend16.2#

2021-03-23 11:09:27 221

原创 lua程序设计(第四版)练习答案自做(第二十六章)

#!/usr/bin/lualocal socket=require"socket"function receive(connection) connection:settimeout(0) local s,status,partial=connection:receive(2^10) if status=="timeout" then coroutine.yield(connection) end return s or partial,statusendfunction downl

2021-03-21 21:58:14 90

原创 lua程序设计(第四版)练习答案自做(第二十三章)

文章目录23.123.223.323.423.5仓库23.1待完善23.2 没有进行过垃圾收集的话,会在lua虚拟机关闭后调用它的析构器,所以依然会输出那条信息。 调用os.exit以及程序因为出错而退出时,不会调用析构器。23.3 使用弱引用值的表,并且将函数返回的字符串放进表中,再将表存入弱引用表的相对应的键值对中。23.4 第一次print时,a是由10000个表组成的数组,并且count的值是10000。然后将a赋值nil后,调用垃圾收集,这时候会将数组内的表标记为活跃状态并放入

2021-03-10 21:45:39 139

原创 lua程序设计(第四版)练习答案自做(第二十二章)

文章目录22.122.222.3仓库22.1#!/usr/bin/luafunction getfield(f) local v=_G w=string.match(f,"[^%w%._]") if w then error("seperation character was wrong!") end for w in string.gmatch(f,"([%a_][%w_]*)(%.?)") do v=v[w] end return vend22.2 1 lo

2021-03-09 00:32:48 182

原创 lua程序设计(第四版)练习答案自做(第二十一章)

文章目录21.121.221.321.4仓库21.1#!/usr/bin/luaStack={}function Stack:isempty() return #self==0endfunction Stack:push(v) table.insert(self,v)endfunction Stack:pop() if #self~=0 then table.remove(self) else error("Stack is empty") endendfunctio

2021-03-07 16:14:05 172

原创 lua程序设计(第四版)练习答案自做(第二十章)

文章目录20.120.220.320.420.5仓库20.1#!/usr/bin/lualocal Set={}local mt={}function Set.new(l) local set={} setmetatable(set,mt) for _,v in pairs(l) do set[v]=true end return setendfunction Set.union(a,b) if getmetatable(a)~=mt or getmetatable(b)~=

2021-02-28 15:19:11 189

原创 lua程序设计(第四版)练习答案自做(第十九章)

文章目录19.1仓库19.1#!/usr/bin/luamath.randomseed(os.time())function allwords() local line=io.read() local pos=1 return function () while line do local w,e=string.match(line,"(%w+[,;.:]?)()",pos) if w then pos=e return w else line=

2021-02-26 13:37:17 106

原创 lua程序设计(第四版)练习答案自做(第十八章)

文章目录18.118.218.318.418.5仓库18.1 数值型for应该指的是for i=n,m,1的形式,也就是i从n开始按步长1逐渐递增,直到大于m结束循环function fromto(n,m) n=n-1 return function () n=n+1 if n<=m then return n end endend 无状态迭代器#!/usr/bin/lualocal function iter(m,n) --注意m和n

2021-02-25 14:35:55 255 1

原创 lua程序设计(第四版)练习答案自做(第十七章)

文章目录17.117.217.317.4仓库17.1#!/usr/bin/lualocal DoubleList={}function DoubleList.listNew() return {first=0,last=-1}endfunction DoubleList.pushFirst(list,value) local first=list.first-1 list[first]=value list.first=firstendfunction DoubleList.pus

2021-02-24 13:08:45 137

PhotoShop_CS4快捷键大全

PhotoShop_CS4快捷键大全

2019-07-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除