stdafx与stdafx.h食用方法

2019-05-10 20:01:16


注意:本篇内容仅针对Windows7,Dev-C++!!!

因为Mac OS和Linux都没用过

1.文件位置

stdafx文件不能有后缀!文件图标必须是一片空白!不能有内容!

stdafx.h只能有.h后缀!

这两个文件都保存在Dev-C++的目录下,路径为:

系统默认(即安装Dev-C++的时候没有更改安装目录)32位:

C:\Program Files\Dev-Cpp\MinGW32\include

系统默认(即安装Dev-C++的时候没有更改安装目录)64位:

C:\Program Files (x86)\Dev-Cpp\MinGW64\include

32位:

Dev-C++安装目录\MinGW32\include

64位:

Dev-C++安装目录\MinGW64\include

2.食用方法

直接复制到目录下,在之后的工程中就可以使用啦!

用法(有复制stdafx中的内容):

#include<stdafx>

如果你只复制了stdafx.h的话,那么你就必须要加.h后缀。

在正式使用前推荐先将stdafx.h文件在Dev-C++中先按F9编译一下,这样可以省去不少时间,在以后工程中引用的时候就不需要引用一次编译一次了。

3.文件说明

stdafx.h中的INT高精度类的除法有问题是已知问题,请各位用户先不要使用。如果你知道改正方法,请联系鄙人,拜谢了。

转载请注明出处。

4.函数用法

说明:int、long long等整数类型以下皆称为“整数”。

  1. INT:

高精度类,包含绝大多数普通int的操作。

  1. 各个INT函数:
INT gcd(INT x,INT y)

最大公约数不解释。

INT pow(INT base_num,INT exponent)

快速幂,base_num是底数,exponent是指数。

INT pow(INT base_num,INT exponent,INT mod)

同上,多了个mod而已。

INT sqrt(INT x)

二次根,向下取整。

  1. 各个数学函数:
template<typename T>T gcd(T x,T y)

适用于整数的gcd,具体用法见文末。

template<typename T>T lcm(T x,T y)

最小公约数函数,适用于整数。

template<typename T>T pow(T base_num,T exponent)

快速幂。

template<typename T>T pow(T base_num,T exponent,T mod)

同上,多了个mod。

template<typename T>T factorial(T x)

阶乘函数,适用于大部分C++原有类型(除了STL)。

template<typename T>T square(T x)

没什么用,返回平方值而已。

template<typename T>T lowbit(T x)

一般是树状数组用的,返回x二进制下末尾0的个数。

template<typename T>double distance(T x_1,T y_1,T x_2,T y_2)

求两点间距离函数。

template<typename T>int sgn(T x,T y)

符号函数,大于0返回1,等于0返回0,小于零返回-1。

bool is_prime(int n)

判断素数函数,效率较好。

template<typename T>void make_prime_table(int length,T f[])

素数表函数(埃筛),length是长度,f是标记数组。

void read(LL &num)

快读函数,整型。

void read(double &num)

快读函数,浮点型。

template<typename T>void read(int l,int r,T array[])

快读函数,l为左下限,r为右下限,array是要读入数据的数组。

template<typename T>void write(T num)

快输函数,整型。

int find(int x,int pre[])

并查集专用函数,pre是并查集数组。

int join(int x,int y,int pre[])

同上。

LL random()

随机数函数,数据范围更大。

LL random(LL mod)

同上,加了个mod而已。

ULL urandom()

保证返回数据为非负数。

ULL urandom(LL mod)

同上,加了个mod而已。

注:template用法:

所有有加template的函数,可以传入大部分的C++原有类型(除非有注明特别适用于某种类型),用法和普通函数并无区别。