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() | 开始元素迭代器/结尾元素迭代器 |