基础库
杂项
多表达式叠写返回值是后面那个.例如a=b,1返回后面那个1不是前面那个a.
栈区
| 字 | 码 | 是啥 |
|---|---|---|
| 烫 | 0xCC |
栈上申请未初始化的缺省值 |
| 屯 | 0xCD |
堆上申请未初始化的缺省值 |
| 葺 | 0xDD |
堆上申请所在空间释放后的缺省值 |
? |
0xFD |
已申请的堆区空间上设定的上下边界值 |
x86 系统默认栈区是 0xCC 对应的指令是 int 3 所以为了防止更大的错误,直接用中断指令防止访问非法内存.
卡常
- 使用引用
int &x=dat[aa]然后取址会快不少. - 二维数组使用指针代替直接计算地址,如在矩阵中找一个最大值可以用
int *p=dat,for()*++p; - 典中典之快读快写.
.csv表格形式
1 | 114,514,1919,810\n |
被读取长这样:
逗号分格子,就是顺延到下一个格子.
换行分行,就是$/n$.
小点:$Excel$不会显示好多0的小数点,这是正常现象.
namespace
名字空间就是防止名字重复特地设置的命名机制,形象理解就是套层壳,使用必须先叫名字空间::成员函数.对于不重的情况确实没啥用.
然后using namespace xx就是把封装好的函数直接用就行了(去壳).比如1
2
3
4
5
6
7namespace IO{
template<typename T>
void read(T& num){xxx}
}
//调用:IO::read(xxx);
using namespace IO;//去掉壳子
//调用:read(xxx);
typedef
直观的就是给一个变量取一个小名,大名小名都能用.1
2
3
4typedef int i32;
typedef float(*Func)(int arr[],int num);
void aaa(Func f1,Func f2);
void aaa(float f1(int arr[],int num),float f2(int arr[],int num));
可以直接置换函数,体会一下.
对拍
先写一个数据生成器再说…1
2
3
4
5
6
7
8
9
10
11
12
13
14
using namespace std;
int main(){
while(1){
system("data.exe > sstd.in");
system("sstd.exe < sstd.in > sstd.out");
system("your.exe < sstd.in > your.txt");
if(system("rc sstd.txt your.txt"))break;
Sleep(1000);
}
return 0;
}
sstd可以是暴力,data是生成器.
几个宏定义
__DATE__ :一个 aa:bb:cc 形式的字符串常量.__FILE__ :当前文件名字,字符串常量.__func__ or __FUNCTION__ :当前函数名称__LINE__ :当前是代码的第几行#line 行号 "文件名" :文件名可有可无,行号必须有,替换下一行行号为这个数字,同时文件名从这一行开始更改(其实事实上不会生成新的文件)
SPJ-testlib.h
部分函数.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34以下读入命令可以使用:(为引用部分)
void registerTestlibCmd(argc, argv)
初始化checker,必须在最前面调用一次。
char readChar()
读入一个char,指针后移一位。
char readChar(char c)
和上面一样,但是只能读到一个字母c
char readSpace()
同 readChar(’ ‘).
string readToken()
读入一个字符串,但是遇到空格、换行、eof为止、
long long readLong()
读入一个longlong/int64
long long readLong(long long L, long long R)
同上,但是限定范围(包括L,R)
int readInt()
读入一个int
int readInt(int L, int R),
同上,但是限定范围(包括L,R)`
double readReal()
读入一个实数
double readReal(double L, double R),
同上,但是限定范围(包括L,R)
double readStrictReal(double L, double R, int minPrecision, int maxPrecision),
读入一个限定范围精度位数的实数。
string readString(),
string readLine()
碰撞一行string,到换行或者eof为止
void readEoln()
读入一个换行符
void readEof()
读入一个eof
int eof()