不到断气不罢休 发表于 2024-5-26 14:25:24

【知识点】深入浅出STL标准模板库

前几天谈论了许多关于数论和数据结构的东西,这些内容可能对初学者而言比较晦涩难懂(究竟是属于初高等算法/数据结构的范畴了)。今天计划来讲一些简单的内容 - STL 标准模板库。
STL 标准模板库

C++ 标准模板库 (Standard Template Library, STL),是 C++ 语言非常重要的一个构成部分。它提供了一组通用的类和函数,用于实现一些数据结构和算法。STL 主要包罗以下五个部分:

[*]容器 (Containers):STL 提供了不同的容器来供开辟者根据所必要维护数据来选择存储。
[*]算法 (Algorithms):STL 提供了许多通用算法,用于排序、搜索、复制、修改等操作。
[*]迭代器 (Iterators):STL 迭代器的作用是遍历容器元素的对象。
[*]函数对象 (Function Objects):这是一种行为类似于函数的对象(由于不太常见,因此本篇文章将不会详细讲解 STL 中的函数对象)。
[*]适配器 (Adapters):STL 的适配器用于修改容器、迭代器或函数对象的接口。为方便起见,容器适配器将会与容器部分一同讲解。
综上所述,本文将会主要围绕 容器、算法和迭代器这三者来展开叙述。本文只会论述一些相对常见的模板/方法,部分生僻的内容还请各位自行上网搜索。
容器 Containers

STL 容器还可以被细分成三个类别,分别是 序列式容器 (Sequence Containers)、关联式容器 (Associative Containers) 和 无序关联式容器 (Unordered Associative Containers)。
序列式容器 (Sequence Containers) 与常见容器适配器。

[*]vector 向量容器:向量容器可以被理解为我们常说的动态数组。与普通数组不同的是,动态数组的大小可以在运行过程中更改,并且用户可以任意地在此数组的末端添加数据。它的优点是支持快速随机访问和在末端插入删除元素。向量容器的根本使用方法如下:
#include #include   // 引入头文件using namespace std;int main(){    // 创建一个整数范例,名为 vec 的向量容器,初始存放了数字1-5。    vector vec = {1, 2, 3, 4, 5};      vec.push_back(6);// 向容器末端添加一个元素6。    vec.size();// 获取容器的大小,即容器内元素的个数。    vec.resize(10);// 动态更改容器的大小,将容器的大小设置为10。    // 通过 for 循环对容器举行遍历:    for (int i=0; i
页: [1]
查看完整版本: 【知识点】深入浅出STL标准模板库