摘要:
第八章函数探幽内联函数的选择如果执行函数的编译代码的时间比处理函数调用机制的时间长,则节省的时间将只占整个过程的很小一部分。如果代码执行时间很短,则内联调用就可以节省非内联调用使用的大部分时间。总之:内联用在定义那些被经常调用且短小的函数,例如在某个循环中调用一个函数。内联函数声明是在函数原型或者是定义前加上inline。通常的做法省略函数的原型,将整个定义放置在调用函数之前,这样形式上更加说明这个函数的特别。引用变量C++相比C增加了一种复合类型:引用变量。引用变量就是定义某个变量的一个别名,可以看做是一个伪装的指针。通常用在函数的参数和函数的返回值,前者能够使得大型数据的传递不产生一个副本 阅读全文
摘要:
第六章分支语句和逻辑运算符测试条件发生的强制类型转换只要是使用到这些关于真假的判断,系统将强制转换成bool型,所以对于一般的值类型这个转换时有系统自动完成的,然而对于我们自定义的类类型或者是结构就需要通过重载bool强制类型转换运算符来实现这个功能。所以直接将cin>>num放置到if判定中也是可行的,这将会进行一个强制转换来显示上一次的读取是否成功。条件预算符合错误防范variable==value进行一个反转能够有效的预防错误的发生,因为后者是将一个变量赋值给一个常量,这在编译时就会发生错误。新的顺序点C++规定,||、&&运算符均为顺序点,冒号和逗号运算符也 阅读全文
摘要:
第四章复合类型影响最深的复合类型是类,它是将学习的OOP的堡垒。复合类型必将是用来处理更加复杂的数据类型。C++没有数组越界的检测越界的代码可能能够正确运行和结束,但是也可能因为越界整个程序乃至操作系统崩溃。C++的数组其实和指针有着紧密的联系,和使用指针访问可能就是一个形式上的不同,本质上没有任何区别。也即a[7]与*(a+7)在编译器看来是等价的。字符串常量C++中能够定义字符串常量,但是如果一个字符指针是使用字符串指针来初始化的,那么这个指针是不能够用来改变这个常量的。且如果定义了两个相同的常量那么不同的系统可能采用不同的策略来决定是只保留一份还是多份。几个函数getline()接受一行 阅读全文
摘要:
第三章处理数据今天完成了该章的阅读,本章对C++涉及的数据类型做了一个详尽的说明,并且对于C++与C的细微区别做了说明,总的来所就是C++兼容C的习惯,但是作者告诉我们为什么C++要做出这些改变,细细想想,的却是有道理.该章中牵涉到了部分C++11特性,所以要确保编译器支持这些特性,本人使用dev5.2.0.3.在工具->编译选项->编译器标签下选择编译时加入以下命令,并在框中输入-std=c++0x即可.最简单的使用计算机处理数据的思维过程1.信息将存在哪里;2.要存储说明值;3.存储何种类型的信息.大概的想法就是根据需求来安排合理的存储类型吧.当然在这之前就是要了解各个类型的特 阅读全文
摘要:
题义:规定这样的一个序列,只由A,B,C,D四种字符组成,并且A和C的个数都为偶数个,现在问一个长度为N的序列,有多少种构成方式能够使长度为N的串满足这些要求。解法:对于任意长度的一个串,我们设定三个状态f[i][0]表示满足要求的合法串, f[i][1]表示A和C只有一个字符不满足的非法串, f[i][2]表示A和C均不满足的非法串。那么就有递推关系 f[i][0] = 2*f[i-1][0] + f[i-1][1], f[i][1] = 2*(f[i-1][0] + f[i-1][1] + f[i-1][2]), f[i][2] = f[i-1][1] + 2*f[i-1][2].根据这个 阅读全文
摘要:
前言在C++PrimerPlus和C++Primer这两本书之间选择了很久,最后还是敲定了前者,原因是许多人反应前者更基础,有的人推荐有过C语言的基础的话适合后者.而我觉得自己在编程方面仅仅局限于解决竞赛中的题目,而并没有一个软件设计的思想在里面,这在平时做的一些课程设计中自己也能够感受到,两者不能说没有关系,许多解题的想法和编程技巧能够很好的应用到项目中来,但是自我感觉语言中的很大一部分还是被忽略了,因为那些在解题中几乎是用不到的.因此选择了这本C++PrimerPlus,能够让我从0基础来认识C++,因此也要花费更多的时间来读这一本书.第一章:预备知识不得不说,预备知识和书中前言所说的不需 阅读全文
摘要:
刚刚过去的这个学期真的很快,还记得暑假呆在学校里面天天做题,紧接着就是省赛了,后面又是实习的半个月,软考花去一个星期,C++课程设计由于答应和两个女生一组,所以也就赶啊赶.再后面就是期末复习,之后又和宿舍的人玩了几天英雄联盟.后面去实验室呆了近20天.1月19号回到衡阳,正式结束了上一个学期.对上学期的总结就是简单,忙碌,松懈,警惕,遗憾.个中体味也许只有自己能够明白.最后在实验室的20天似乎又找到了什么,意识到如果不够勤奋的话,很快又会变得平凡,之后便过着以后自己不想过着的生活.于是付出时间学习这一想法久久在心中挥散不去.每个寒假都说要做点什么,但是最后总是不了了之,原因很简单,没有一个明确 阅读全文
摘要:
这题一个很巧妙的操作就是对一个给定的区间同意将下界拿出来, 然后转化为多重背包问题. 使用二进制优化.代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#define ER 0x80808080using namespace std;/*解题:给定一个Multi数组, 一个Pairs数组, 要求出最好的Table的数组. 其中应满足这个几 个要求, 阅读全文
摘要:
这题和POJ1947类似, 同样是树形DP, 就是因为按照上题的思路写, 导致写的是非常的蛋疼. 调了几小时还是无果. 时候证明还是对状态的意义理解的不透彻.设dp[x][0][j]表示以节点x为根至多走j步并且返回x处所能够得到的最多苹果. dp[x][1][j]表示以节点x为根至多走j步不需要返回x处所能够得到的最多苹果.那么就可以得到动态转移方程(此时的dp[x][..][j]还没有完善, 需要后期处理一下):dp[x][0][j] = max( dp'[x][0][j-m] + dp[v][0][m] ); 0<=m<=j 其中dp'表示计算到上一个孩子节点 阅读全文
摘要:
这题在yefeng1627的淫威下迅速屈服. 由刚开始的一个较动态方程便很好的解决了组合问题, 再加之进一步分析, 将本来应该要的辅助状态删除, 剩下的就是一个非常优美的动态规划方程了.详见代码:#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#define INF 0x3f3f3f3fusing namespace std;/*题意:给定一棵树, 现在要求从这棵树中分割出P个节点的子树, 问最少要破 阅读全文