C++中STL常用函数简单总结

sort()快排

函数原型:sort(起始地址, 末尾地址, cmp),其中cmp是可以自己定义的函数名,默认递增排列

cmp函数示例:

bool cmp(int &a, int &b){
    return a > b;
}

reverse()逆置

函数原型:reverse(起始地址, 末尾地址)

stoi()

函数原型:stoi(string类型)
将string类型转换为int类型

unique()去重

函数原型:unique(起始地址, 末尾地址, fun);其中fun为自定义的函数名。

注意:unique函数去重并不是真正的去重,它是不断的将后面不重复的元素覆盖前面重复的元素,最后返回最后一个不重复的元素的地址。

二分查找函数

lower_bound(起始地址, 末尾地址, target):查找第一个大于等于target目标值的位置

upper_bound(起始地址, 末尾地址, target):查找第一个大于target目标值的位置

binary_search(起始地址, 末尾地址, target):查找target是否存在于数组或vector中,找到返回true,否则返回false

字符串查找函数

s1.find(s2):在s1字符串中查找s2,查找到返回第一个字符的位置,查找失败返回s1.npos

set.count(a):本来是计算a出现的次数,但是由于集合中是没有重复元素的,于是count函数也就被作为查找函数了,因为a只能出现1次或者0次,查找成功,返回1;查找失败返回0.

map.find():主要用于查找key是否存在map中,不存在返回map.end(),用法和set一样

vector

vector, 变长数组,倍增的思想

函数 功能
size() 返回元素个数
empty() 返回是否为空
clear() 清空
front()/back() 访问第一个元素/最后一个元素
push_back()/pop_back() 插入/弹出最后一个元素
begin()/end() 开始元素迭代器/结尾元素迭代器

pair<int, int>

函数 功能
first 第一个元素
second 第二个元素

string,字符串

函数 功能
size()/length() 返回字符串长度
empty() 返回是否为空
clear() 清空
substr(起始下标,(子串长度)) 返回子串
c_str() 返回字符串所在字符数组的起始地址

queue, 队列

函数 功能
size() 返回队列长度
empty() 返回是否为空
push() 向队尾插入一个元素
front() 返回队头元素
back() 返回队尾元素
pop() 弹出队头元素

priority_queue

优先队列,默认是大根堆

函数 功能
size() 返回队列长度
empty() 返回是否为空
push() 插入一个元素
top() 返回堆顶元素
pop() 弹出堆顶元素

定义成小根堆的方式:

priority_queue<int, vector<int>, greater<int>> q;

stack, 栈

函数 功能
size() 返回栈长度
empty() 返回是否为空
push() 向栈顶插入一个元素
top() 返回栈顶元素
pop() 弹出栈顶元素

deque, 双端队列

函数 功能
size() 返回队列长度
empty() 返回是否为空
clear() 清空队列
front()/back() 返回队头元素
push_back()/pop_back() 插入/弹出最后一个元素
push_front()/pop_front() 插入/弹出第一个元素
begin()/end() 开始元素迭代器/结尾元素迭代器