C++的STL 都是标准模板库,可以直接使用
一、STL的介绍
具体可以去看C++容器库
1.标准的C++11的array(数组容器)
forward_list(单向链表容器)
1.vector:动态数组,支持随机访问和尾部插入/删除操作,但在中间插入/删除操作较慢。
2.deque:双端队列,支持随机访问,头部和尾部插入/删除操作都很快。
3.list:双向链表,支持双向迭代器,插入/删除操作速度快,但随机访问较慢。
2.容器适配器
1.stack:栈适配器,底层可以是 vector、deque 或 list。只允许在栈顶进行插入和删除操 作, 遵循后进先出(LIFO)的原则。
2.queue:队列适配器,底层可以是 vector、deque 或 list。只允许在队尾进行插入,在队头 进行删除操作,遵循先进先出(FIFO)的原则。
3.priority_queue:优先队列适配器,底层通常使用 vector 实现。插入一个元素时,会按照一 定的规则将元素放到队列中的合适位置,获取元素时会返回队列中最高优先级的元素。
3.C++ STL提供了有序关联容器
-
set:基于红黑树实现的集合容器,容器内元素不能重复,元素按照从小到大的顺序排列。
-
multiset:基于红黑树实现的集合容器,容器内元素可以重复,元素按照从小到大的顺序排列。
-
map:基于红黑树实现的键值对容器,容器内键值不能重复,元素按照键值从小到大的顺序排列。
-
multimap:基于红黑树实现的键值对容器,容器内键值可以重复,元素按照键值从小到大的顺序排列。
4.迭代器
1.输入迭代器(Input Iterator):支持单向迭代,只能读取,不能修改,每个元素只能被遍历 一次。适用于顺序读取数据的场景,如输入流。
2.输出迭代器(Output Iterator):支持单向迭代,只能修改,不能读取,每个元素只能被遍 历一次。适用于顺序写入数据的场景,如输出流。
3.前向迭代器(Forward Iterator):支持单向迭代,可以读取和修改,每个元素可以被遍历 多 次。适用于需要多次遍历的场景,如单向链表。
4.双向迭代器(Bidirectional Iterator):支持双向迭代,可以读取和修改,每个元素可以被遍 历多次,支持前向遍历和反向遍历。适用于需要前向和反向遍历的场景,如双向链表。
5.随机访问迭代器(Random Access Iterator):支持随机访问、读取和修改,可以按照任意 顺序访问元素,支持指针算术运算。适用于需要随机访问元素的场景,如动态数组。
5.泛型算法
-
查找算法:find、find_if、count、count_if、binary_search、lower_bound、upper_bound、equal_range等。
-
排序算法:sort、stable_sort、partial_sort、nth_element等。
-
修改算法:copy、copy_if、copy_n、fill、fill_n、generate、generate_n、replace、replace_if、remove、remove_if、unique等。
-
遍历算法:for_each、transform、accumulate、reduce等。
-
集合算法:set_intersection、set_union、set_difference、set_symmetric_difference等。
-
堆算法:make_heap、push_heap、pop_heap、sort_heap等。
-
数值算法:inner_product、adjacent_difference、partial_sum等。