文章目录
前言
春招之际,笔试了几家互联网企业试水,总结了一些容易忽视的知识点(C++)。
正文
1.while(n–)和while(–n)的区别
在用while循环代替for循环的时候需要注意
eg:
int n=10;
while(n--) cout<<n<<endl; //a
n=10;
while(--n) cout<<n<<endl; //b
a语句输出的是9~0;
b语句输出的是9~1。
其实就是一个n–和–n的区别,记忆也很简单:
n–表示先用n的值再对n减一;
–n表示先对n减一再用n的值。
2.用cin读取缓存区
cin在读取缓存区的时候不是单纯按空格或者换行符分隔
eg:
输入: 123b 234a
string a;
int b;
char c;
cin>>a;
cout<<a<<" "<<b<<" "<<c<<endl;
则输出:123b 234 a
3.特殊数据的读入
笔者碰到的大部分笔试都会像牛客上acm模式的题一样,组内数据按空格分隔开,且会先给定每组数据的个数。但也会存在用特殊字符(逗号)分隔组内数据、不给数据个数的情况,比如hw。这时候我们可以利用stringstream过滤特殊字符,用cin.get()识别换行符从而区分组间数据。
eg:
4.且、或运算的执行逻辑
弄清这个执行逻辑,避免在判断时想当然的错误。
|| 或运算:不论每个条件是否为真,都会判断完所有条件。
&& 且运算:依次判断,只要出现不为真的条件就不会接着判断。
5.cout输出的类型和变量有关
cout在输出答案时,输出的类型和变量有关
eg:
int a=1,b=2;
int c=1;double d=2;
cout<<a/b<<endl;
cout<<c/d<<endl;
则输出:
0
0.5
6.一些常用但容易弄错的函数
这一章主要列举了一些会考到但容易弄错的函数。具体参数和功能大家可以自行百度。
string类: erase,find,replace,strcmp
map类: lower_bound,upper_bound
priority_queue类:大小根堆的建立
附上一位大佬写的STL容器全解析链接
https://www.cnblogs.com/fusiwei/p/11823234.html
总结
以上就是笔者总结的一些小的知识点,如有疏漏,后续补充。今年春招形势不易,大家共勉,逐梦互联网~