C++学习笔记(一)编译器与链接器
前言本系列笔记根据B站网课BV1Dk4y1j7oj记录。 编译器的作用C++程序首先通过编译器生成中间文件。 一般而言,编译器通过文件后缀名决定如何对其进行处理(如.h文件作为被视为头文件,.cpp文件被作为编译单元^1进行编译)。 编译器首先对程序进行预处理。常用的预处理命令有#include、#define、#if、#ifdef、#ifndef、endif、#pragma等。 这里只举例讲解其中的几个: #include该命令把所引用的头文件内容原封不动地直接粘贴到命令位置。 PS:#include指令的三种类型 #include<xxx.h> 这种#include指令所引用的头文件,编译时会去系统目录寻找。 #include”xxx.h” 这种#include指令所引用的头文件,编译时会去当前目录(即包含该#include指令的文件所在的目录)寻找,若没找到再去系统目录寻找。 #include <xxx> 同第一种,C++标准下的新写法。 #define该命令查找文件中的特定字符并进行替换。(如#define int long...
C语言基本数据类型数值范围一览
本文基于32位平台及IEEE 754标准 整型 (Integer Types) 类型 字节数 有符号/无符号 十进制科学计数法 2的幂表示法 备注 short 2 有符号 -3.28 × 10⁴ ~ 3.2767 × 10⁴ (-2^{15}) ~ (2^{15}-1) unsigned short 2 无符号 0 ~ 6.5535 × 10⁴ (0) ~ (2^{16}-1) int 4 有符号 -2.147483648 × 10⁹ ~ 2.147483647 × 10⁹ (-2^{31}) ~ (2^{31}-1) unsigned int 4 无符号 0 ~ 4.294967295 × 10⁹ (0) ~ (2^{32}-1) long 4 或 8 有符号 -2.147483648 × 10⁹ ~ 2.147483647 × 10⁹ (32位) 或 -9.22 × 10¹⁸ ~ 9.22 × 10¹⁸ (64位) (-2^{31}) ~ (2^{31}-1) (32位) 或 (-2^{63}) ~ (2^{63}-1) (64位)...
二分查找基础模板
二分查找可以根据查找区间的不同分类,常见的类型有左闭右闭型与左闭右开型。 下面以左闭右闭型为例: 1234567891011121314151617181920212223std::vector<int> a(n + 1);int bs(int key){ int l = 1, r = n; while(l <= r) { int mid = ((r - l) >> 1) + l; if(a[mid] > key) { r = mid - 1; } else if(a[mid] < key) { l = mid + 1; } else { return mid; } } return -1;} 对于不同类型...
算法竞赛常用STL容器及其函数
向量——vector与数组类似的一种STL容器,但其大小可以在运行过程中改变。 1std::vector<int> vec(3,1);//初始化其大小为3,初值为1 vec.push_back(1);【尾接】 vec.pop_back();【尾删】 vec.clear();【清空】 vec.empty()【返回是否为空】 vec.size()【返回大小】 vec.resize(5,3);【将vec空间重置为5,多出来的空间初始化为3】 注意: 需要引入头文件vector。 在声明vector时尽量初始化其空间大小,用push_back()函数扩大向量空间时有额外时间开销。 size()函数返回的类型数据存储范围较小,小心其溢出。 vector与数组一样使用方括号运算符访问。 栈——stack在该STL容器中数据先进后出,数据从下到上堆叠储存,只能访问最顶部(也就是最新添加)的数据。 1std::stack<int> stk; stk.push(1);【进栈】 stk.top()【返回栈顶值】 stk.pop();【出栈】 stk.size()...




