【C++ STL】

STL(Standard Template Library)是 C++ 标准库中的一个重要组成部分,提供了许多通用的数据结构和算法,包括容器、迭代器、算法、函数对象、适配器等。STL 的设计思想是将数据结构和算法分离,通过使用泛型编程技术实现通用性和可重用性。

STL 的主要组成部分包括:

容器(Containers):提供了各种数据结构,如 vector、list、deque、set、map 等,用于存储和管理数据。
迭代器(Iterators):提供了一种通用的访问容器元素的方式,可以通过迭代器遍历容器中的元素。
算法(Algorithms):提供了各种常用的算法,如排序、查找、拷贝、移动、计算等,可以对容器中的元素进行操作。
函数对象(Function Objects):提供了一种通用的函数封装方式,可以将函数作为参数传递给算法和容器等。
适配器(Adapters):提供了一些特殊的容器和迭代器,如 stack、queue、priority_queue、reverse_iterator 等,可以方便地扩展和适配现有的容器和迭代器。

以下是 C++ 标准库中所有的容器类型:

std::array:固定大小的数组容器。
std::vector:动态数组容器。
std::deque:双端队列容器。
std::forward_list:单向链表容器。
std::list:双向链表容器。
std::set:有序集合容器。
std::map:有序关联容器。
std::multiset:有序多重集合容器。
std::multimap:有序多重关联容器。
std::unordered_set:无序集合容器。
std::unordered_map:无序关联容器。
std::unordered_multiset:无序多重集合容器。
std::unordered_multimap:无序多重关联容器。
std::stack:栈容器。
std::queue:队列容器。
std::priority_queue:优先队列容器。
std::bitset:位集容器,用于存储和操作二进制位。
std::valarray:值数组容器,用于存储和操作数值数组。
std::complex:复数容器,用于存储和操作复数。
std::optional:可选值容器,用于表示可能为空的值。
std::variant:变体容器,用于存储和操作多个可能类型的值。
std::pair:两个值的容器,用于存储和操作两个值。
std::tuple:多个值的容器,用于存储和操作多个值。
以上容器类型都是 C++ 标准库中提供的常用容器类型,每个容器都有其特点和适用场景。需要根据具体的需求和场景进行选择,以获得更好的性能和效率。

以下是 STL 中所有的算法:

std::all_of:判断是否所有元素都满足条件。
std::any_of:判断是否有任意一个元素满足条件。
std::none_of:判断是否所有元素都不满足条件。
std::for_each:对容器中的每个元素执行指定的操作。
std::count:统计容器中等于指定值的元素个数。
std::count_if:统计容器中满足指定条件的元素个数。
std::mismatch:在两个容器中查找第一个不匹配的元素。
std::equal:判断两个容器是否相等。
std::find:在容器中查找第一个等于指定值的元素。
std::find_if:在容器中查找第一个满足指定条件的元素。
std::find_if_not:在容器中查找第一个不满足指定条件的元素。
std::find_end:在容器中查找最后一个子序列。
std::find_first_of:在容器中查找第一个匹配另一个容器中的任意一个元素的元素。
std::adjacent_find:在容器中查找第一对相邻的相等元素。
std::search:在容器中查找第一个子序列。
std::search_n:在容器中查找第一个连续出现 n 次的元素。
std::copy:将容器中的元素复制到另一个容器中。
std::copy_if:将容器中满足指定条件的元素复制到另一个容器中。
std::copy_n:将容器中的前 n 个元素复制到另一个容器中。
std::copy_backward:将容器中的元素从后往前复制到另一个容器中。
std::move:将容器中的元素移动到另一个容器中。
std::move_backward:将容器中的元素从后往前移动到另一个容器中。
std::fill:将容器中的元素全部赋值为指定值。
std::fill_n:将容器中的前 n 个元素赋值为指定值。
std::transform:对容器中的每个元素执行指定的转换操作。
std::generate:对容器中的每个元素生成指定的值。
std::generate_n:对容器中的前 n 个元素生成指定的值。
std::replace:将容器中所有等于指定值的元素替换为另一个值。
std::replace_if:将容器中所有满足指定条件的元素替换为另一个值。
std::replace_copy:将容器中的元素复制到另一个容器中,并将其中所有等于指定值的元素替换为另一个值。
std::replace_copy_if:将容器中的元素复制到另一个容器中,并将其中所有满足指定条件的元素替换为另一个值。
std::remove:将容器中所有等于指定值的元素移动到容器末尾,并返回新的结束迭代器。
std::remove_if:将容器中所有满足指定条件的元素移动到容器末尾,并返回新的结束迭代器。
std::remove_copy:将容器中的元素复制到另一个容器中,并移除其中所有等于指定值的元素。
std::remove_copy_if:将容器中的元素复制到另一个容器中,并移除其中所有满足指定条件的元素。
std::unique:移除容器中所有连续的相等元素,并返回新的结束迭代器。
std::unique_copy:将容器中的元素复制到另一个容器中,并移除其中所有连续的相等元素。
std::reverse:将容器中的元素反转。
std::reverse_copy:将容器中的元素反转并复制到另一个容器中。
std::rotate:将容器中的元素循环左移 n 个位置。
std::rotate_copy:将容器中的元素循环左移 n 个位置并复制到另一个容器中。
std::sort:对容器中的元素进行排序。
std::partial_sort:对容器中的前 n 个元素进行排序。
std::partial_sort_copy:将容器中的前 n 个元素排序并复制到另一个容器中。
std::stable_sort:对容器中的元素进行稳定排序。
std::nth_element:将容器中的第 n 个元素移动到正确的位置。
std::merge:将两个有序容器合并成一个有序容器。
std::inplace_merge:对容器中的两个有序区间进行归并排序。
std::includes:判断一个有序容器是否包含另一个有序容器。
std::set_union:求两个有序容器的并集。
std::set_intersection:求两个有序容器的交集。
std::set_difference:求两个有序容器的差集。
std::set_symmetric_difference:求两个有序容器的对称差集。
std::min_element:查找容器中的最小元素。
std::max_element:查找容器中的最大元素。
std::minmax_element:查找容器中的最小和最大元素。
std::clamp:将指定值限制在指定范围内。
std::lexicographical_compare:比较两个容器的字典序。
std::next_permutation:生成容器中的下一个排列。
std::prev_permutation:生成容器中的上一个排列。

以上算法都是 STL 中提供的常用算法,每个算法都有其特点和适用场景。需要根据具体的需求和场景进行选择,以获得更好的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值