玄学

持续更新中..

/*

2019-08-22 upd:

原帖叫“OI学习中需要注意的”,今天看到觉得这个标题太sb了就改了

然后看了看内容感觉也比较sb就删了一大半

精简了内容,现在只记录c++的一些与玄学有关的特性,方便查阅,防止爆0

*/

大量莫名其妙的WA RE元凶集中于此
主要是C++的一些“特性”导致的

考前必看!

左移右移如果涉及到long long一定给常数加上LL,否则会爆int e.g:1LL<<64 

c++11的std多出许多全局函数,如next(),begin(),end(),你的程序不能使用这些变量名,否则直接CE爆零。但是默认的c++版本并非c++11,所以如果你使用了这些变量,编译器不会报错!在编译选项中加入-std=c++11就可以解决该问题。(然而也不是一劳永逸,c++11能通过编译的c++又不一定能过,,,总之建议都试一下保险)

建议开启全部编译警告,这样编译器能帮你找出部分bug。加上-O2会提示更多可能的错误

运算整数时不要信任任何stl!特别是cmath里面的数学函数,非常坑

比如pow()算整数时大概率误差

比如abs()整数linux编译过不了(可以引用cstdlib,里面有整数的abs)

如果遇到了一些完全无法解释的错误,比如说一cout就对注释掉就错之类的奇葩问题,八成是地址越界了,好好检查一下数组!

关于vector:其实常数很小,可以放心使用。但是一定不要嵌套写高维vector,这样搞常数大的飞起(尤其是写矩阵的时候)

cout很多时候比printf快得多。

multiset, multimap等可重STL的erase函数会删除多个元素,可用multiset::erase(multiset::find(x))替代。

原文地址:https://www.cnblogs.com/sun123zxy/p/metaphysics.html