使用STL需要我们了解容器及其对应的成员函数和成员变量,不求全部背诵,但是要有个印象,方便文档查询和算法使用,下表罗列了算法竞赛中STL常用函数和变量:

类别

名称

功能说明

适用容器

容量相关

size()

返回当前元素个数

全部容器

empty()

判断容器是否为空

全部容器

max_size()

返回容器可容纳的最大元素数

全部容器

capacity()

返回当前分配的内存容量(仅vector/string)

vector,   string

reserve(n)

预分配内存空间

vector,   string, deque

shrink_to_fit()

释放多余内存

vector,   string, deque

访问元素

operator[]

通过下标访问元素

vector,   deque, array, map, unordered_map

at(n)

带边界检查的访问

vector,   deque, array, map, unordered_map

front()

访问第一个元素

序列容器

back()

访问最后一个元素

序列容器(除forward_list)

data()

返回指向底层数组的指针

vector,   array, string

迭代器

begin()/end()

返回首尾迭代器

全部容器

cbegin()/cend()

返回常量迭代器

全部容器

rbegin()/rend()

返回反向迭代器

支持反向遍历的容器

crbegin()/crend()

返回常量反向迭代器

支持反向遍历的容器

修改操作

push_back(value)

在尾部添加元素

vector,   deque, list, string


push_front(value)

在头部添加元素

deque,   list, forward_list

pop_back()

删除尾部元素

vector,   deque, list, string

pop_front()

删除头部元素

deque,   list, forward_list

insert(position,   value)

在指定位置插入元素

序列容器

emplace(position,   args)

原位构造插入

序列容器

erase(position)

删除指定位置元素

序列容器

clear()

清空所有元素

全部容器

resize(n)

调整容器大小

序列容器

swap(container)

交换两个容器内容

全部容器

关联容器专用

find(key)

查找指定键的元素

关联容器

count(key)

统计键的出现次数

关联容器

lower_bound(key)

返回第一个不小于key的元素

有序关联容器

upper_bound(key)

返回第一个大于key的元素

有序关联容器

equal_range(key)

返回匹配键的范围

关联容器

insert(value)

插入元素

关联容器

erase(key)

删除指定键的元素

关联容器

emplace(args)

原位构造插入

关联容器

特殊操作

merge(container)

合并两个有序容器

list,   forward_list

splice(position,   container)

转移元素

list,   forward_list

remove(value)

删除所有匹配元素

list,   forward_list

unique()

删除连续重复元素

list,   forward_list

sort()

排序容器元素

list,   forward_list

reverse()

反转元素顺序

list,   forward_l

容量相关

size()

返回当前元素个数

全部容器

empty()

判断容器是否为空

全部容器

max_size()

返回容器可容纳的最大元素数

全部容器

访问元素

operator[]

通过下标访问元素

vector,   deque, array, map, unordered_map

at(n)

带边界检查的访问

vector,   deque, array, map, unordered_map

front()

访问第一个元素

序列容器

back()

访问最后一个元素

序列容器(除forward_list)

修改操作

push_back(value)

在尾部添加元素

vector,   deque, list

push_front(value)

在头部添加元素

deque,   list, forward_list

pop_back()

删除尾部元素

vector,   deque, list

pop_front()

删除头部元素

deque,   list, forward_list

insert(position,   value)

在指定位置插入元素

序列容器

erase(position)

删除指定位置元素

序列容器

clear()

清空所有元素

全部容器

迭代器

begin()/end()

返回首尾迭代器

全部容器

cbegin()/cend()

返回常量迭代器

全部容器

rbegin()/rend()

返回反向迭代器

支持反向遍历的容器

特殊操作

find(key)

查找元素(关联容器)

set,   map, unordered_set, unordered_map

count(key)

统计元素出现次数

关联容器

该表展示了STL容器常用成员函数和成员变量,读者没必要死记硬背,仅需在使用时查看即可,常做算法题的话肯定会练熟的。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)