C++ STL标准模板库

yubo-guan / 2024-01-17 / 原文

目录
  • 简介
  • 容器(Containers)
  • 迭代器(Iterators)
  • 算法(Algorithms)
  • 函数对象(Function Objects)
  • 适配器(Adaptors)
  • 分配器(Allocators)
  • std::min_element()


简介

C++中的STL(标准模板库)可以分为六个部分,分别是容器(Containers)、迭代器(Iterators)、算法(Algorithms)、函数对象(Function Objects)、适配器(Adaptors)和分配器(Allocators)。

  1. 容器(Containers):STL提供了多种容器,如向量(vector)、链表(list)、双端队列(deque)、集合(set)、映射(map)等。这些容器用于存储和组织数据,每种容器都有其特定的特性和适用场景。

  2. 迭代器(Iterators):迭代器是STL中用于遍历容器中元素的工具。它们提供了一种统一的访问容器元素的方式,使得算法可以独立于容器而工作。

  3. 算法(Algorithms):STL包含了大量的算法,如排序、查找、遍历等。这些算法可以直接应用于STL容器,也可以与自定义数据结构一起使用。

  4. 函数对象(Function Objects):函数对象是可调用对象,它们可以像函数一样被调用。STL中的很多算法都可以接受函数对象作为参数,从而实现灵活的算法行为定制。

  5. 适配器(Adaptors):适配器是一种类或函数,用于将一种接口转换为另一种接口。STL中的适配器包括栈(stack)、队列(queue)和优先队列(priority_queue),它们提供了特定的数据结构和访问方式。

  6. 分配器(Allocators):分配器用于管理内存分配和释放,它们提供了一种抽象的内存管理接口,使得STL容器可以灵活地使用不同的内存管理策略。

这六个部分共同构成了C++中STL的核心组成部分,为开发人员提供了丰富的数据结构和算法库,极大地提高了开发效率和代码质量。


容器(Containers)


迭代器(Iterators)


算法(Algorithms)


函数对象(Function Objects)


适配器(Adaptors)


分配器(Allocators)


std::min_element()

std::min_element() 函数用于在给定范围内查找最小元素。它接受两个迭代器参数,表示要查找的范围的起始和结束位置。此外,它还可以接受一个可选的比较函数,用于自定义比较规则。

以下是 std::min_element() 函数的基本用法示例:

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> numbers = {3, 1, 4, 1, 5, 9};
    auto minElement = std::min_element(numbers.begin(), numbers.end());

    std::cout << "The smallest element is " << *minElement << std::endl;

    return 0;
}

在这个示例中,我们使用 std::min_element() 函数找到了 numbers 向量中的最小元素,并将其打印出来。

如果要使用自定义的比较函数,可以将其作为第三个参数传递给 std::min_element() 函数。
除了std::min_element(),C++ STL 还提供了std::max_element()函数用于查找最大值。这两个函数都接受两个迭代器参数,表示要查找的范围的起始和结束位置。