STL常用命令

vector

vector, 变长数组,倍增的思想
    size()  返回元素个数
    empty()  返回是否为空
    clear()  清空
    front()/back()
    push_back()/pop_back()
    begin()/end()
    []

pair

pair<int, int>
    first, 第一个元素
    second, 第二个元素
    支持比较运算,以first为第一关键字,以second为第二关键字(字典序)

string

string,字符串
    size()/length()  返回字符串长度
    empty()
    clear()
    substr(起始下标,(子串长度))  返回子串
    c_str()  返回字符串所在字符数组的起始地址

queue

queue, 队列
    size()
    empty()
    push()  向队尾插入一个元素
    front()  返回队头元素
    back()  返回队尾元素
    pop()  弹出队头元素

priority_queue

priority_queue, 优先队列,默认是大根堆
    size()
    empty()
    push()  插入一个元素
    top()  返回堆顶元素
    pop()  弹出堆顶元素
    定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q;

stack

stack, 栈
    size()
    empty()
    push()  向栈顶插入一个元素
    top()  返回栈顶元素
    pop()  弹出栈顶元素

queue

deque, 双端队列
    size()
    empty()
    clear()
    front()/back()
    push_back()/pop_back()
    push_front()/pop_front()
    begin()/end()
    []

set/map

set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
size()
empty()
clear()
begin()/end()
++, – 返回前驱和后继,时间复杂度 O(logn)

set/multiset
    insert()  插入一个数
    find()  查找一个数
    count()  返回某一个数的个数
    erase()
        (1) 输入是一个数x,删除所有x   O(k + logn)
        (2) 输入一个迭代器,删除这个迭代器
    lower_bound()/upper_bound()
        lower_bound(x)  返回大于等于x的最小的数的迭代器
        upper_bound(x)  返回大于x的最小的数的迭代器
map/multimap
    insert()  插入的数是一个pair
    erase()  输入的参数是pair或者迭代器
    find()
    []  注意multimap不支持此操作。 时间复杂度是 O(logn)
    lower_bound()/upper_bound()

unordered_map

unordered_set, unordered_map, unordered_multiset, unordered_multimap, 哈希表
    和上面类似,增删改查的时间复杂度是 O(1)
    不支持 lower_bound()/upper_bound(), 迭代器的++,--

bitset

bitset, 圧位
    bitset<10000> s;
    ~, &, |, ^
    >>, <<
    ==, !=
    []

    count()  返回有多少个1

    any()  判断是否至少有一个1
    none()  判断是否全为0

    set()  把所有位置成1
    set(k, v)  将第k位变成v
    reset()  把所有位变成0
    flip()  等价于~
    flip(k) 把第k位取反

标准库函数

lower_bound() 返回大于等于val的第一个位置,如果没有返回end();
upper_bound() 返回大于val的第一个位置,没有返回end();
binary_search() 返回是否存在某个元素

常用数学函数

头文件 #include <math> 或者 #include <math.h> 
  
int abs(int x)  求整数x的绝对值 
double acos(double x)  计算arcos(x)的值 
double asin(double x)  计算arsin(x)的值
double atan(double x)  计算arctan(x)的值 
double cos(double x)  计算cos(x)的值 
double cosh(double x)  计算x的双曲余弦cosh(x)的值 
double exp(double x)  求e的x次方的值 
double fabs(double x)  求实数x的绝对值  
double fmod(double x)  求x/y的余数 
long labs(long x)  求长整型数的绝对值
double log(double x)  计算In(x)的值 
double log10(double x)  计算log10(x)的值
double modf(double x, double *y)  取x的整数部分送到y所指向的单元格中  
double pow(double x, double y)    求x的y次幂的值 
double sin(double x)  计算sin(x)的值
double sqrt(double x)  求x的平方根的值  
double tan(double x)  计算tan(x)的值  
fcvt  将浮点型数转化为字符串

常用字符串处理函数

头文件 #include <string> 或者 #include <string.h> 
  
函数原型  功能  返回值 
void *memcpy(void *p1, const void *p2 size_t n)  存储器拷贝,将p2所指向的共n个字节拷贝到p1所指向的存储区中  目的存储区的起始地址 
(实现任意数据类型之间的拷贝) 
void *memset(void *p int v, size_t n)  将v的值作为p所指向的区域的值,n是p所指向区域的大小  该区域的起始地址 
char *strcpy(char *p1, const char *p2)  将p2所指向的字符串拷贝到 
p1所指向的存储区中  目的存储区的起始地址 
char *strcat(char *p1, const 
char *p2)  将p2所指向的字符串连接到 
p1所指向的字符串后面  目的存储区的起始地址 
int strcmp(const char *p1, const char *p2)  比较p1,p2所指向的两个 
字符串的大小  两个字符串相同,返回0;若p1所指向的字符串小于p2所指的字符串,返回负值;否则,返回正值 
int strlen(const char *p)  求p所指向的字符串的长度  字符串所包含的字符个数 
(不包括字符串结束标志’\n’) 
char *strncpy(char *p1, const char *p2, size_t n)  将p2所指向的字符串(至多n个字符)拷贝到p1所指向的存储区中  目的存储区的起始地址 
(与strcpy()类似) 
char *strncat(char *p1, const char *p2, size_t n)  将p2所指向的字符串(至多n个字符)连接到p1所指向的字符串的后面  目的存储区的起始地址 
(与strcpy()类似) 
char *strncmp(const char *p1, const char *p2, size_t n)  比较p1,p2所指向的两个字符串的大小,至多比较n个字符  两个字符串相同,返回0;若p1所指向的字符串小于p2所指的字符串,返回负值;否则,返回正值 
(与strcpy()类似) 
char *strstr(const char *p1, const char *p2)  判断p2所指向的字符串是否是p1所指向的字符串的子串  若是子串,返回开始位置的地址;否则返回0。 

其他常用函数

头文件#include <stdlib> 或者 #include <stdlib.h> 
函数原型  功能  返回值  说明 
void abort(void)  终止程序执行     不能结束工作 
void exit(int)  终止程序执行     做结束工作 
double atof(const char *s)  将s所指向的字符串转换成实数  实数值    
int atoi(const char *s)  将s所指向的字符串转换成整数  整数值    
long atol(const char *s)  将s所指的字符串转换成长整数  长整数值    
int rand(void)  产生一个随机整数  随机整数    
void srand(unsigned int)  初始化随机数产生器       
int system(const char *s)  将s所指向的字符串作为一个可执行文件,并加以执行       
max(a, b)  求两个数中的大数  大数  参数为任意类型 
min(a,b)  求两个数中的小数  小数  参数为任意类型 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值