C++常用库函数

本文中提到的函数库有: 
1. 标准C++库字符串类std::string的用法 
begin 得到指向字符串开头的Iterator 
end 得到指向字符串结尾的Iterator 
rbegin 得到指向反向字符串开头的Iterator 
rend 得到指向反向字符串结尾的Iterator 
size 得到字符串的大小 
length() 和size函数功能相同 
max_size 字符串可能的最大大小 
capacity 在不重新分配内存的情况下,字符串可能的大小 
empty 判断是否为空 
operator[] 取第几个元素,相当于数组 
c_str 取得C风格的const char* 字符串 
data 取得字符串内容地址 
operator= 赋值操作符 
reserve 预留空间 
swap 交换函数 
insert 插入字符 
append 追加字符 
push_back 追加字符 
erase 删除字符串 
clear 清空字符容器中所有内容 
resize 重新分配空间 
assign 和赋值操作符一样 
replace 替代 
copy 字符串到空间 
find 查找,返回基于0的索引号 
rfind 反向查找 
find_first_of 查找包含子串中的任何字符,返回第一个位置 
find_first_not_of 查找不包含子串中的任何字符,返回第一个位置 
find_last_of 查找包含子串中的任何字符,返回最后一个位置 
find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置 
substr(n1,len) 得到字符串从n1开始的长度为len的子串 
compare 比较字符串(支持所有的关系运算符) 
operator+ 字符串链接 
operator+= += 操作符 
operator== 判断是否相等 
operator!= 判断是否不等于 
operator< 判断是否小于 
operator>> 从输入流中读入字符串 
operator<< 字符串写入输出流 
getline 从输入流中读入一行 
2.cctype库 
using ::isalpha; //是否字母 
using ::iscntrl; //是否控制符 
using ::isdigit; //是否是数字 
using ::isgraph; //是否字母、数字或标点 
using ::islower; //是否小写 
using ::isprint; //是否可打印字符 
using ::ispunct; //是否标点 
using ::isspace; //是否空格 
using ::isupper; //是否大写 
using ::isxdigit; //是否十六进制数字 
using ::tolower; //转为小写 
using ::toupper; //转为大写 
3 algorithm.库

循环 
对序列中的每个元素执行某项操作 
for_each() 
查找 
在序列中找出某个值的第一次出现的位置 
find(a,a+size,n) 返回b,当b=a+size即没找到,a为指针 
在序列中找出符合某谓词的第一个元素 
find_if() 
在序列中找出一子序列的最后一次出现的位置 
find_end() 
在序列中找出第一次出现指定值集中之值位置 
find_first_of() 
在序列中找出相邻的一对值 
adjacent_find() 
计数 
在序列中统计某个值出现的次数 
count() 
在序列中统计与某谓词匹配的次数 
count_if() 
比较 
找出两个序列相异的第一个元素 
mismatch() 
两个序列中的对应元素都相同时为真 
equal(a,a+n,b,cmp) 
在序列中找到等于某值的连续n次出现的位置 
equal_range(a,a+n,x) 
搜索 
在序列中找出一子序列的第一次出现的位置 
search() 
在序列中找出一值的连续n次出现的位置 
search_n() 
复制 
从序列的第一个元素起进行复制 
copy() 
从序列的最后一个元素起进行复制 
copy_backward() 
交换 
交换两个元素 
swap() 
交换指定范围的元素 
swap_ranges() 
交换由迭代器所指的两个元素 
iter_swap() 
变换 
将某操作应用于指定范围的每个元素 
transform() 
替换 
用一个给定值替换一些值 
replace() 
替换满足谓词的一些元素 
replace_if() 
复制序列时用一给定值替换元素 
replace_copy() 
复制序列时替换满足谓词的元素 
replace_copy_if() 
填充 
用一给定值取代所有元素 
fill() 
用一给定值取代前n个元素 
fill_n() 
生成 
用一操作的结果取代所有元素 
generate() 
用一操作的结果取代前n个元素 
generate_n() 
删除 
删除具有给定值的元素 
remove() 
删除满足谓词的元素 
remove_if() 
复制序列时删除具有给定值的元素 
remove_copy() 
复制序列时删除满足谓词的元素 
remove_copy_if() 
唯一 
删除相邻的重复元素 
unique() 
复制序列时删除相邻的重复元素 
unique_copy() 
反转 
反转元素的次序 
reverse(a,a+n) 
复制序列时反转元素的次序 
reverse_copy() 
环移 
循环移动元素 
rotate(a,a+m,a+n) 
以m位置为界交换前后序列 
复制序列时循环移动元素 
rotate_copy() 
随机 
采用均匀分布来随机移动元素 
random_shuffle() 
划分 
将满足某谓词的元素都放到前面 
partition() 
将满足某谓词的元素都放到前面并维持原顺序 
stable_partition() 
排序 
以很好的平均效率排序 
sort(a,a+20,cmp) 
bool cmp( int a, int b ) 
{ return a>b; } 
在容器中或string用begin() 
排序,并维持相同元素的原有顺序 
stable_sort() 
将序列的前一部分排好序 
partial_sort() 
复制的同时将序列的前一部分排好序 
partial_sort_copy() 
第n个元素 
将第n各元素放到它的正确位置 
nth_element() 
二分检索 
找到大于等于某值的第一次出现 
lower_bound() 
找到大于某值的第一次出现 
upper_bound() 
找到(在不破坏顺序的前提下)可插入给定值的最大范围 
equal_range() 
在有序序列中确定给定元素是否存在 
binary_search() 
归并 
归并两个有序序列 
merge() 
归并两个接续的有序序列 
inplace_merge() 
有序结构上的集合操作 
一序列为另一序列的子序列时为真 
includes() 
构造两个集合的有序并集 
set_union() 
构造两个集合的有序交集 
set_intersection() 
构造两个集合的有序差集 
set_difference() 
构造两个集合的有序对称差集(并-交) 
set_symmetric_difference() 
堆操作 
向堆中加入元素 
push_heap() 
从堆中弹出元素 
pop_heap() 
从序列构造堆 
make_heap() 
给堆排序 
sort_heap() 
最大和最小 
两个值中较小的 
min() 
两个值中较大的 
max() 
序列中的最小元素 
min_element(a,a+n) 
序列中的最大元素 
max_element() 
词典比较 
两个序列按字典序的第一个在前 
lexicographical_compare() 
排列生成器 
按字典序的下一个排列 
next_permutation() 
按字典序的前一个排列 
prev_permutation() 
4 cmath库 
using ::abs; //绝对值 
using ::acos; //反余弦 
using ::acosf; //反余弦 
using ::acosl; //反余弦 
using ::asin; //反正弦 
using ::asinf; //反正弦 
using ::asinl; //反正弦 
using ::atan; //反正切 
using ::atan2; //y/x的反正切 
using ::atan2f; //y/x的反正切 
using ::atan2l; //y/x的反正切 
using ::atanf; //反正切 
using ::atanl; //反正切 
using ::ceil; //上取整 
using ::ceilf; //上取整 
using ::ceill; //上取整 
using ::cos; //余弦 
using ::cosf; //余弦 
using ::cosh; //双曲余弦 
using ::coshf; //双曲余弦 
using ::coshl; //双曲余弦 
using ::cosl; //余弦 
using ::exp; //指数值 
using ::expf; //指数值 
using ::expl; //指数值 
using ::fabs; //绝对值 
using ::fabsf; //绝对值 
using ::fabsl; //绝对值 
using ::floor; //下取整 
using ::floorf; //下取整 
using ::floorl; //下取整 
using ::fmod; //求余 
using ::fmodf; //求余 
using ::fmodl; //求余 
using ::frexp; //返回value=x*2n中x的值,n存贮在eptr中 
using ::frexpf; //返回value=x*2n中x的值,n存贮在eptr中 
using ::frexpl; //返回value=x*2n中x的值,n存贮在eptr中 
using ::ldexp; //返回value*2exp的值 
using ::ldexpf; //返回value*2exp的值 
using ::ldexpl; //返回value*2exp的值 
using ::log; //对数 
using ::log10; //对数 
using ::log10f; //对数 
using ::log10l; //对数 
using ::logf; //对数 
using ::logl; //对数 
using ::modf; //将双精度数value分解成尾数和阶 
using ::modff; //将双精度数value分解成尾数和阶 
using ::modfl; //将双精度数value分解成尾数和阶 
using ::pow; //计算幂 
using ::powf; //计算幂 
using ::powl; //计算幂 
using ::sin; //正弦 
using ::sinf; //正弦 
using ::sinh; //双曲正弦 
using ::sinhf; //双曲正弦 
using ::sinhl; //双曲正弦 
using ::sinl; //正弦 
using ::sqrt; //开方 
using ::sqrtf; //开方 
using ::sqrtl; //开方 
using ::tan; //正切 
using ::tanf; //正切 
using ::tanh; //双曲正切 
using ::tanhf; //双曲正切 
using ::tanhl; //双曲正切 
using ::tanl; //正切 
5.cstdlib库 
double atof(const char *str); 
把字符串str转换成double类型。等价于:strtod(str, (char**)NULL)。

int atoi(const char *str); 
把字符串str转换成int类型。等价于:(int)strtol(str, (char**)NULL, 10)。 
long atol(const char *str); 
把字符串str转换成long类型。等价于:strtol(str, (char**)NULL, 10)。 
double strtod(const char *start, char **end); 
把字符串start的前缀转换成double类型。在转换中跳过start的前导空白符,然后逐个读入构成数的字符,任何非浮点数成分的字符都会终止上述过程。如果end不为NULL,则把未转换部分的指针保存在*end中。 
如果结果上溢,返回带有适当符号的HUGE_VAL,如果结果下溢,那么函数返回0。在这两种情况下,errno均被置为ERANGE。 
long int strtol(const char *start, char **end, int radix); 
把字符串start的前缀转换成long类型,在转换中跳过start的前导空白符。如果end不为NULL,则把未转换部分的指针保存在*end中。 
如果radix的值在2到36间之间,那么转换按该基数进行;如果radix为0,则基数为八进制、十进制、十六进制,以0为前导的是八进制,以0x或0X为前导的是十六进制。无论在哪种情况下,串中的字母是表示10到radix-1之间数字的字母。如果radix是16,可以加上前导0x或0X。 
如果结果上溢,则依据结果的符号返回LONG_MAX或LONG_MIN,置errno为ERANGE。 
unsigned long int strtoul(const char *start, char **end, int radix); 
与strtol()类似,只是结果为unsigned long类型,溢出时值为ULONG_MAX。 
int rand(void); 
产生一个0到RAND_MAX之间的伪随机整数。RAND_MAX值至少为32767。 
void srand(unsigned int seed); 
设置新的伪随机数序列的种子为seed。种子的初值为1。 
void *calloc(size_t num, size_t size); 
为num个大小为size的对象组成的数组分配足够的内存,并返回指向所分配区域的第一个字节的指针;如果内存不足以满足要求,则返回NULL。 
分配的内存区域中的所有位被初始化为0。 
void *malloc(size_t size); 
为大小为size的对象分配足够的内存,并返回指向所分配区域的第一个字节的指针;如果内存不足以满足要求,则返回NULL。 
不对分配的内存区域进行初始化。 
void *realloc(void *ptr, size_t size); 
将ptr指向的内存区域的大小改为size个字节。如果新分配的内存比原内存大,那么原内存的内容保持不变,增加的空间不进行初始化。如果新分配的内存比原内存小,那么新内存保持原内存区中前size字节的内容。函数返回指向新分配空间的指针。如果不能满足要求,则返回NULL,原ptr指向的内存区域保持不变。 
如果ptr为NULL,则行为等价于malloc(size)。 
如果size为0,则行为等价于free(ptr)。 
void free(void *ptr); 
释放ptr指向的内存空间,若ptr为NULL,则什么也不做。ptr必须指向先前用动态分配函数malloc、realloc或calloc分配的空间。 
void abort(void); 
使程序非正常终止。其功能类似于raise(SIGABRT)。 
void exit(int status); 
使程序正常终止。atexit函数以与注册相反的顺序被调用,所有打开的文件被刷新,所有打开的流被关闭。status的值如何被返回依具体的实现而定,但用0表示正常终止,也可用值EXIT_SUCCESS和EXIT_FAILURE。 
int atexit(void (*func)(void)); 
注册在程序正常终止时所要调用的函数func。如果成功注册,则函数返回0值,否则返回非0值。 
int system(const char *str); 
把字符串str传送给执行环境。如果str为NULL,那么在存在命令处理程序时,返回0值。如果str的值非NULL,则返回值与具体的实现有关。 
char *getenv(const char *name); 
返回与name相关的环境字符串。如果该字符串不存在,则返回NULL。其细节与具体的实现有关。 
void *bsearch(const void *key, const void *base, size_t n, size_t size, 
int (compare)(const void , const void *)); 
在base[0]…base[n-1]之间查找与*key匹配的项。size指出每个元素占有的字节数。函数返回一个指向匹配项的指针,若不存在匹配则返回NULL。 
函数指针compare指向的函数把关键字key和数组元素比较,比较函数的形式为: 
int func_name(const void *arg1, const void *arg2); 
arg1是key指针,arg2是数组元素指针。 
返回值必须如下: 
arg1 < arg2时,返回值<0; 
arg1 == arg2时,返回值==0; 
arg1 > arg2时,返回值>0。 
数组base必须按升序排列(与compare函数定义的大小次序一致)。 
void qsort(void *base, size_t n, size_t size, 
int (compare)(const void , const void *)); 
对由n个大小为size的对象构成的数组base进行升序排序。 
比较函数compare的形式如下: 
int func_name(const void *arg1, const voie *arg2); 
其返回值必须如下所示: 
arg1 < arg2,返回值<0; 
arg1 == arg2,返回值==0; 
arg1 > arg2,返回值>0。 
int abs(int num); 
返回int变元num的绝对值。 
long labs(long int num); 
返回long类型变元num的绝对值。 
div_t div(int numerator, int denominator); 
返回numerator/denominator的商和余数,结果分别保存在结构类型div_t的两个int成员quot和rem中。 
ldiv_t div(long int numerator, long int denominator); 
返回numerator/denominator的商和余数,结果分别保存在结构类型ldiv_t的两个long成员quot和rem中。 
6.iomanip库 
dec 置基数为10 相当于”%d” 
hex 置基数为16 相当于”%X” 
oct 置基数为8 相当于”%o” 
setfill( ‘c’ ) 设填充字符为c 
setprecision( n ) 设显示小数精度为n位 
setw( n ) 设域宽为n个字符 
▲setw(n)用法: 通俗地讲就是预设宽度 
这个控制符的意思是保证输出宽度为n。如: 
cout << setw( 3 ) << 1 << setw( 3 ) << 10 << setw( 3 ) << 100 <

  • 8
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值