C++ 数据结构与 STL
数据结构
数据结构用于存储和组织数据。数组是数据结构的一个例子,它允许将多个元素存储在一个变量中。
C++ 还包括许多其他数据结构,每种都以不同的方式处理数据。
这些都是 C++ STL 的一部分,STL 代表 标准 模板 库。
C++ STL
STL 是一个库,由不同的数据结构和算法组成,用于有效地存储和操作数据。
如果说数据结构存储数据,那么算法就是用来解决不同问题的,通常通过搜索和操作这些数据结构来解决。
使用正确的数据结构和算法可以使您的程序运行得更快,尤其是在处理大量数据时。
最常见的数据结构是
数据结构 | 描述 |
---|---|
向量 | 像数组一样存储元素,但大小可以动态改变。元素的添加和删除通常在末尾进行。可以通过索引访问元素。 |
List(列表) | 顺序存储元素,每个元素都与下一个元素相连。元素的添加和删除可以在两端进行。不能通过索引访问。 |
栈 | 以特定顺序存储元素,称为 LIFO(后进先出),元素只能从顶部添加和删除。不能通过索引访问。 |
队列 | 以特定顺序存储元素,称为 FIFO(先进先出),元素在末尾添加,从前端删除。不能通过索引访问。 |
双端队列 | 在双端队列中存储元素,元素可以从两端添加和删除。可以通过索引访问元素。 |
Set | 存储唯一元素。不能通过索引访问。 |
Map | 以“键/值”对的形式存储元素。可以通过键(而不是索引)访问。 |
使用哪一个取决于您的具体需求。它们共同的一点是,您必须包含相应的头文件才能使用它们
示例
// 包含向量库
#include <vector>
// 包含列表库
#include <list>
// 包含集合库
#include <set>
// 包含映射库
#include <map>
// 包含栈库
#include <stack>
// 包含队列库
#include <queue>
以下是使用向量的示例,在我们包含 <vector>
库之后
示例
// 创建一个名为 cars 的 vector,用于存储字符串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 打印 vector 元素
for (string car : cars) {
cout << car << "\n";
}
自己动手试一试 »
接下来的章节将解释每种数据结构的工作原理以及如何使用它们。
STL 的关键概念
STL 的关键组成部分包括容器、迭代器和算法,以及它们之间的关系
在计算机科学中,数据结构和算法是相辅相成的。如果没有算法高效地搜索或操作数据结构,数据结构就没什么价值;如果没有数据结构可供操作,算法也几乎没什么价值。
在接下来的章节中,您将看到所有内容是如何相互关联的。