C++库常用函数一览(<string><cctype><algorithm><cmath><cstdlib><iomanip><numeric>)

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.库

 

1)循环

对序列中的每个元素执行某项操作

for_each()

 

2)查找

在序列中找出某个值的第一次出现的位置

 

find(a,a+

size,n)

返回b

当b=a+size

即没找到,a为指针

 

在序列中找出符合某谓词的第一个元素

find_if()

在序列中找出一子序列的最后一次出现的位置

find_end()

在序列中找出第一次出现指定值集中之值的位置

find_first_of()

在序列中找出相邻的一对值

adjacent_find()

计数

在序列中统计某个值出现的次数

count()

在序列中统计与某谓词匹配的次数

count_if()

比较

找出两个序列相异的第一个元素

mismatch()

两个序列中的对应元素都相同时为真

在序列中找到等于某值的连续n次出现的位置

equal(a,a+n,b,cmp)

equal_range(a,a+n,x)

搜索

在序列中找出一子序列的第一次出现的位置

search()

在序列中找出一值的连续n次出现的位置

search_n()

 

修改性序列操作(27个)

复制

从序列的第一个元素起进行复制

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()

 

序列排序及相关操作(27个)

排序

以很好的平均效率排序

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)。

 

5.2 atoi

int atoi(const char *str);

把字符串str转换成int类型。等价于:(int)strtol(str, (char**)NULL, 10)。

 

5.3 atol

long atol(const char *str);

把字符串str转换成long类型。等价于:strtol(str, (char**)NULL, 10)。

 

5.4 strtod

double strtod(const char *start, char **end);

把字符串start的前缀转换成double类型。在转换中跳过start的前导空白符,然后逐个读入构成数的字符,任何非浮点数成分的字符都会终止上述过程。如果end不为NULL,则把未转换部分的指针保存在*end中。

如果结果上溢,返回带有适当符号的HUGE_VAL,如果结果下溢,那么函数返回0。在这两种情况下,errno均被置为ERANGE。

 

5.5 strtol

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。

 

5.6 strtoul

unsigned long int strtoul(const char *start, char **end, int radix);

与strtol()类似,只是结果为unsigned long类型,溢出时值为ULONG_MAX。

 

5.7 rand

int rand(void);

产生一个0到RAND_MAX之间的伪随机整数。RAND_MAX值至少为32767。

 

5.8 srand

void srand(unsigned int seed);

设置新的伪随机数序列的种子为seed。种子的初值为1。

 

5.9 calloc

void *calloc(size_t num, size_t size);

为num个大小为size的对象组成的数组分配足够的内存,并返回指向所分配区域的第一个字节的指针;如果内存不足以满足要求,则返回NULL。

分配的内存区域中的所有位被初始化为0。

 

5.10 malloc

void *malloc(size_t size);

为大小为size的对象分配足够的内存,并返回指向所分配区域的第一个字节的指针;如果内存不足以满足要求,则返回NULL。

不对分配的内存区域进行初始化。

 

5.11 realloc

void *realloc(void *ptr, size_t size);

将ptr指向的内存区域的大小改为size个字节。如果新分配的内存比原内存大,那么原内存的内容保持不变,增加的空间不进行初始化。如果新分配的内存比原内存小,那么新内存保持原内存区中前size字节的内容。函数返回指向新分配空间的指针。如果不能满足要求,则返回NULL,原ptr指向的内存区域保持不变。

如果ptr为NULL,则行为等价于malloc(size)。

如果size为0,则行为等价于free(ptr)。

 

5.12 free

void free(void *ptr);

释放ptr指向的内存空间,若ptr为NULL,则什么也不做。ptr必须指向先前用动态分配函数malloc、realloc或calloc分配的空间。

 

5.13 abort

void abort(void);

使程序非正常终止。其功能类似于raise(SIGABRT)。

 

5.14 exit

void exit(int status);

使程序正常终止。atexit函数以与注册相反的顺序被调用,所有打开的文件被刷新,所有打开的流被关闭。status的值如何被返回依具体的实现而定,但用0表示正常终止,也可用值EXIT_SUCCESS和EXIT_FAILURE。

 

5.15 atexit

int atexit(void (*func)(void));

注册在程序正常终止时所要调用的函数func。如果成功注册,则函数返回0值,否则返回非0值。

 

5.16 system

int system(const char *str);

把字符串str传送给执行环境。如果str为NULL,那么在存在命令处理程序时,返回0值。如果str的值非NULL,则返回值与具体的实现有关。

 

5.17 getenv

char *getenv(const char *name);

返回与name相关的环境字符串。如果该字符串不存在,则返回NULL。其细节与具体的实现有关。

 

5.18 bsearch

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函数定义的大小次序一致)。

 

5.19 qsort

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。

 

5.20 abs

int abs(int num);

返回int变元num的绝对值。

 

5.21 labs

long labs(long int num);

返回long类型变元num的绝对值。

 

5.22 div

div_t div(int numerator, int denominator);

返回numerator/denominator的商和余数,结果分别保存在结构类型div_t的两个int成员quot和rem中。

 

5.23 ldiv

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个字符

这个控制符的意思是保证输出宽度为n。如:

cout << setw( 3 ) << 1 << setw( 3 ) << 10 << setw( 3 ) << 100 << endl; 输出结果为

1 10100 (默认是右对齐)当输出长度大于3时(<<1000),setw(3)不起作用。

▲setw(n)用法: 通俗地讲就是预设宽度

如 cout<<setw(5)<<255<<endl;

结果是:

(空格)(空格)255

▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充

如 cout<<setfill(‘@‘)<<setw(5)<<255<<endl;

结果是:

@@255

▲setbase(int n) : 将数字转换为 n 进制.

如 cout<<setbase(8)<<setw(5)<<255<<endl;

cout<<setbase(10)<<setw(5)<<255<<endl;

cout<<setbase(16)<<255<<endl;

结果是:

(空格)(空格)377

(空格)(空格) 255

(空格)(空格) f f

▲ setprecision用法

使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。

如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。

如果与setiosnags(ios::scientific)合用,可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。

setiosflags(ios::fixed) 固定的浮点显示

setiosflags(ios::scientific) 指数表示

setiosflags(ios::left) 左对齐

setiosflags(ios::right) 右对齐

setiosflags(ios::skipws) 忽略前导空白

setiosflags(ios::uppercase) 16进制数大写输出

setiosflags(ios::lowercase) 16进制小写输出

setiosflags(ios::showpoint) 强制显示小数点

setiosflags(ios::showpos) 强制显示符号

7.numeric库

accumulate(first ,last,n)求和,n为初始值;

adjacent_difference(first,last,result)求相邻元素的差,后减前,result为差的序列在原序列开始的位置

checked_ adjacent_difference(first,last,result)

inner_product(first1,first2,last1,last2)将对应元素相乘并求出累计和

partial_sum(first,last,result)求到任意位置的累计和,result为和的序列在原序列开始的位置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C、传统 C++ #include <assert.h>    //设定插入点 #include <ctype.h>     //字符处理 #include <errno.h>     //定义错误码 #include <float.h>     //浮点数处理 #include <fstream.h>    //文件输入/输出 #include <iomanip.h>    //参数化输入/输出 #include <iostream.h>   //数据流输入/输出 #include <limits.h>    //定义各种数据类型最值常量 #include <locale.h>    //定义本地化函数 #include <math.h>     //定义数学函数 #include <stdio.h>     //定义输入/输出函数 #include <stdlib.h>    //定义杂项函数及内存分配函数 #include <string.h>    //字符串处理 #include <strstrea.h>   //基于数组的输入/输出 #include <time.h>     //定义关于时间的函数 #include <wchar.h>     //宽字符处理及输入/输出 #include <wctype.h>    //宽字符分类 ////////////////////////////////////////////////////////////////////////// 标准 C++ (同上的不再注释) #include <algorithm>    //STL 通用算法 #include <bitset>     //STL 位集容器 #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex>     //复数类 #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque>      //STL 双端队列容器 #include <exception>    //异常处理类 #include <fstream> #include <functional>   //STL 定义运算函数(代替运算符) #include <limits> #include <list>      //STL 线性列表容器 #include <map>       //STL 映射容器 #include <iomanip> #include <ios>       //基本输入/输出支持 #include <iosfwd>     //输入/输出系统使用的前置声明 #include <iostream> #include <istream>     //基本输入流 #include <ostream>     //基本输出流 #include <queue>      //STL 队列容器 #include <set>       //STL 集合容器 #include <sstream>     //基于字符串的流 #include <stack>      //STL 堆栈容器     #include <stdexcept>    //标准异常类 #include <streambuf>    //底层输入/输出支持 #include <string>     //字符串类 #include <utility>     //STL 通用模板类 #include <vector>     //STL 动态数组容器 #include <cwchar> #include <cwctype> using namespace std; ////////////////////////////////////////////////////////////////////////// C99 增加 #include <complex.h>   //复数处理 #include <fenv.h>    //浮点环境 #include <inttypes.h>  //整数格式转换 #include <stdbool.h>   //布尔环境 #include <stdint.h>   //整型环境 #include <tgmath.h>   //通用类型数学宏 --------------------------------------------------------------------------------------------------------- 补充: 经常在CSDN以及其他之类的技术论坛上问关于C++ 头文件的问题。提出这些问题的往往就是那些刚学C++的新手。当初我是菜鸟的时候也问过类似的问题。 现在来看看下面两个include: #include<iostream> // 这个就是1998年标准化以后的标准头文件 #include<iostream.h> // 这个就是标准化以前的头文件 更本质上的区别就是iostream把标准C++的组件放在一个名位std的namespace里面。而相对的iostream.h则将这些标准组件放在全局空间里,同时在标准化以后旧有的C标准也已经经过改造了。 看看下面这两个头文件 // 标准化后经过改造的C的标准,所有的组件都放在了std中 #include<cstdio> // 标准化以前C++中的C标准 #include<stdio.h> // 在看看这个头文件C标准下 基于char* 的字符处理函数 #include<string.h> // 在标准化以后他变成了这样 #include<cstring> // 但是很多朋友还看见过这个字符串处理函数,他包含了新的string class #include<string> 经过了标准委员会如此大规模手术后,在98年以前出品的C++编译器(BC3.0,BC5.0)上能顺利通过编译的源文件,在支持新标准的编译器上可能无法顺利通过编译也就是很正常的事了。 [起因] 在回过头来看看标准程序,这个程序涵盖范围相当广大,提过了许许多多好用的功能。正是因为这样标准程序中class的名称和函数名与第三方提供的程序中的class名或是函数名发生名字冲突的可能性大大增大。为了避免这个问题的发生,标准委员会决定将标准程序中每一样东西都放在namespace std中。但是这么做同时有引来了一个新的问题。很多C++程序代码依赖那些已经存在很多年的C++ “准”标准程序C++迟迟未标准化才导致这些情况的发生),例如iosteam.h,complex.h等等。 为了解决这个新出现的问题,标准化委员会决定设计一些新的头文件名,给那些穿上std外衣的组件所使用。把C++头文件的.h去掉,于是就有前面出现的iostream,同样C的头文件也做了相同的处理,同时在前面加上了一个字母c,以表示是C的头文件(感觉上有中种族歧视的感觉)。同时标准化委员会声明就有的C++头文件将不再列于被支持的名单之中了,而旧有的C头文件为了满足“对C的兼容性”这个古老契约,仍然将继续存活下去。 但是,那些编译器厂商不可能去推翻他们客户的旧有编译器(也跟本不会去这么做),所以那些旧有的C++头文件仍然苟延残喘的活了下来,并不断的扰乱那些C++新兵的心智。 下面就是现在大多数C++开发工具表示头文件的组织状态: 1. 旧的C++头文件 比如iostream.h,他们虽然被标准化委员会所抛弃,但由于各大厂商为了各自的商业利益仍然将继续存活下去,这些头文件的内容将不处于namespace std中。 2. 新的C++头文件如iostream虽然提供了和旧有头文件相同的功能,但他的内容都并入了namespace std中,从而有效避免了名字污染的问题。 3. 标准C的头文件如stdio.h继续获得支持,这类文件的内容并未放在std中。 4. C函数的技能也有对应的新式C++版本,起名称类似cstdio,这类头文件的内容也有幸穿上了std的外衣。 其实标准化以后的标准程序的改动并不只有这些而已,很多的标准化组件都被“tamplate化”。其中就有元老级人物iostream。标准程序的问题并不是用一篇,两篇文章就可以说清楚的。如果你像进一步的了解C++的标准程序的话,你可以看看侯先生的《C++标准程序》。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值