天下之大,无奇不有,C++也是这样,今天小编来盘点几个有意思的代码,看看你认识几个?以后见到之后千万别装不认识。
一、基础篇——不一样的输出
1.cerr 输出
cout和cerr究竟有什么不同?这也是小编以前很茫然的一部分;
cout对应于标准输出流,默认情况下是显示器。这是一个被缓冲的输出,可以被重定向。
cerr对应标准错误流,用于显示错误消息。默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。一般情况下不被重定向。
翻译成人话来讲就是cout可重定向,cerr不能重定向,也就是说如果你是搞竞赛的话,please “珍爱生命,远离cerr"。那么,为什么用cerr?比如说:你的程序遇到了栈用完了的情况或者递归无出口之类的情况,没有地方借内存来存放错误信息,自从有了cerr,革命变得焕然一新,在最紧急的情况下,仍能得到输出的支持。
二、手残篇——懒人的做法
2.传说中的万能头文件!
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
这一列头文件你是不是看的眼花缭乱呢?
为了能让我们的手可以不变残,为了让我们的大脑得到休息,为了我们能避免不必要的尴尬,请认准:
#include<bits/stdc++.h>,对,你没有看错!一个顶13个!像小编这样的,从来都记不住#include<algorithm>,以至于不能用sort~~~,只能手写排序,实属人生一大悲剧。
那么这么简便的一个头文件在此,其他头文件都得靠边站,要它们有甚用?虽然它在大多oj上的兼容性还蛮好的,但是有一些竞赛是不能使用万能头文件的,据说时间也比较慢,所以不到“山重水复疑无路”,最好不要使用。
3.using namespace std;有时候可以不用写!
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello,world";
return 0;
}
小编是一个手懒的人,自然与旁人不同,小编会浓缩成这样。
#include<iostream>
main()
{
std::cout<<"Hello,world";
}
对,就是这么霸气!return 0都不带写的,程序仍然可以运行。如果使用using namespace std;语句较少,可以在每句前加std::在特定情况下很方便。
4.typedef,一个更偷懒且没有局限性的法宝
小编以前一直看不懂什么是typedef,也不愿意知道,后来才明白它可以起到一劳永逸的效果。比方说小编在一次比赛中发现题目要求要用long long,且要写多次,小编会在main函数外添一句typedef long long ll;这样以后再写long long就写成 ll name;就好了。小编是奇葩中的奇葩,自然不会就此罢休,于是写了一句#define long long ll;并把刚才那句删了,结果还没有任何错误,一样可以达到相同的效果,小编真是太高兴了,因为以后不用背typedef这个单词了。
三、代码与时间的较量!!!
5.>> 运算 和 << 运算
>> 运算是二进制的情况下,右移多少位,相当于除以2的n次幂 例如: 3>>1 = 1 8>>2 = 2
<< 运算同理,小编之前一直看不懂这是干什么,最近才明白,小编心里有一个大大的问号,直接写一个a/2什么的不就行了。
像小编这样的蒟蒻是无法理解什么是时间复杂度的,小编只在意怎么能写出题来,如果你是大佬,建议学会这个运算。
6.输出的不同
众所周知,C++中输入输出分为两大部分:cin和cout,scanf和printf;
如果你还在写:
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello,world!";
return 0;
}
你就out了,别看cin,cout写起来方便且是C++独有的,其实printf和scanf才是比较快的,如果是参加竞赛,请使用printf和scanf。
感谢所有看到最后的同志们,小编还有很多不足,希望大家能提出来,小编会更加努力的。