C/C++简单函数
对于ACM而言,c++远比c好用的多,因为c++的标准模板库能为比赛节省许多时间。虽然cin/cout在某些方面不如scanf/printf,但瑕不掩瑜,总的来说,c++对于竞赛而言,优大于劣。
万能头文件
1 |
万能头文件中几乎包含了所有常用的头文件,但它的兼容性不敢恭维,或许绝大多数oj都能编译通过,但难保有些漏网之鱼。万能头文件虽然方便,但并不推荐使用,一来它会使我们怠惰,二来有些头文件中内置的变量名会与我们自己定义的变量名重用,导致一些莫名其妙的错误。还是推荐自己写头文件。
c++与c的头文件不同之处在于.h和c,例如:
1 | c: |
此外,使用c++还需要加上一条:
1 | using namespace std; |
命名空间,用来区分相同函数名的不同函数。
最大/小值、交换函数
1 | max(a, b); |
它们分别完成了返回两个数中的最大值,返回两个数中的最小值,交换两个值的作用。
数组的初始化
1 | int a[N]; |
特别注意memset是按照字节初始化的,例如初始化为1。
实际上存储到int类型后的值是:
00000001 00000001 00000001 00000001
并非想当然的1。
而c++中的fill函数则可以任意赋值。
数组的排序
1 | int a[10] = {3,1,4,1,5,9,2,6,5,3}; |
排序分为稳定排序和不稳定排序:
在数组中,可能存在多个具有相同的关键字的信息,若经过排序,这些信息相对次序不变,则称为稳定排序,反之则称为不稳定排序。
在sort函数中,可以增加第三个比较函数来自定义比较优先级,大体上分为三种写法
1 | //1:内置函数 |
二分查找
得到一个有序的数组,是一件美妙的事情。
二分查找,能有效利用数组的有序性,查找到我们需要的信息
1 | int a[10] = {1,1,2,3,3,4,5,5,6,9}; |
Extra
一些自己写就很容易实现的函数
1 | max_element(a, a+10);//范围内的最大值的位置 |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.