zoukankan      html  css  js  c++  java
  • (转)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.库

    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为和的序列在原序列开始的位置

  • 相关阅读:
    openlayers5之ol.proj坐标转换
    bootstrap模态框可拖动 --------------------- 本文来自 gisdoer 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/gisdoer/article/details/82838312?utm_source=copy
    bootstrap模态框可拖动
    leaflet实用插件整理
    面试题经常问的闭包问题
    撩课-Java每天5道面试题第15天
    撩课-Web大前端每天5道面试题-Day4
    撩课-Python-每天5道面试题-第4天
    撩课-Java每天5道面试题第14天
    撩课-Web大前端每天5道面试题-Day3
  • 原文地址:https://www.cnblogs.com/fkissx/p/4610947.html
Copyright © 2011-2022 走看看