16.2.2
这里是代码传送门
今天,早出晚归,所以,学习时间推迟。
早晨,打了一题HD的递归类或者说是数学类题目,不难,做了挺久。感觉这种题目确实不是好归纳的。。。看了半个多小时视频把。
今天看的视频是有关预处理的,就是头文件的。。。感觉这个东西真的是很厉害,是早晨看的,我现在的记忆就是
- 1.头文件在编译的时候,与cpp文件连接,把头文件的内容与cpp中的内容合在一起i,形成一个更大的文件
- 2.我们的制作头文件的时候,要注意,里面最好不要d定义函数,应该声明函数,然后有一个cpp是存放着这个声明着的函数的定义,因此,头文件一般必有对应的cpp文件
- 3.头文件里面也可以有定义函数,但是,要加上宏定义一个什么东东,我没记住,竞赛入门上有,我也没记住,有一个印象就好了
- 4.关于定义与声明,C++书上的划分是,凡是有开辟内存的,就是定义,其他的就是声明,感觉这个也比较好用来着....
然后就是一个fzu 代码1992,代码已经上传,我想说明的是,找出一个数的因子个数,原来有其他方法,这里分享一下(用开平方的方法,会超时....)
今天看书比较迟,所以印象比较深。今天没有复习,看了一下数组,int和char的,这个函数以及会了,没看多久。主要是知道cout中的'\n'与endl与flush(好像是这样拼)的区别
- 1.简单说,就是endl='\n'+'flush',但是,经常发现,endl与'\n',其实木有神马区别,这里我百度找了一下,知乎上这个还是比较让人信服的我是传送门接下来引用比较中肯的一段话:
有关于 endl 文章说的很清楚,有两个作用:1.换行 2.刷新缓存区 一般 输出的话,有两种情况:1.刷新缓存区 2.缓存区满的时候但是一般情况下,不加endl大多数情况下,也能正常输出,是因为在系统较为空闲时候,会查看缓存区的内容,如果发现新的内容,便进行输出。但是 你并不清楚,系统什么时候输出,什么时候不输出,与系统自身的运行状况有关。而刷新缓存区,是强制性的,绝对性的输出。不取决于系统运行状况打一个很形象的比喻, endl 相当于 一个 “要求” -- 你不得不做 (现在,立刻做) 不加 endl 的情况,相当于 一个 “建议” -- 你有空做下(你并不清楚,什么时候做,做没做)talk is cheap, show you the code 代码之下,了无秘密可以亲自测试一下如下代码:
std::cout << "the normal one! " << std::endl;
std::cout << "the test! ";
sleep(20);
std::cout << "the test is over" << std::endl;
输出结果:the normal one!
the test! the test is over
而且 很明显 在测试中发现 第一行the normal one输出后,等待了较长时间 才输出第二行,而且第二行的the test! the test is over 是同时输出的。也就是说,你的第二行代码 the test! 根本就没有立刻输出,只是在缓存器中,在sleep结束后,才进行输出。以下代码 可做 对照组 作为参考std::cout << "the normal one! " << std::endl;
std::cout << "the test! " << std::endl;
sleep(20);
std::cout << "the test is over" << std::endl;
接下来就是字符串的输入输出流,看书的时候,我发现了这个函数cin.getline
有了这个真是太棒了!可以代替gets,又不用getchar怎么繁琐,还有其他cin.get ,cout.put.用处可能都不如这个这个大巴
今天就这么多

浙公网安备 33010602011771号