第一节 · 军械库 · 初识标准库

到目前为止,我们已经学习了 C++ 的基础语法——变量、类型、运算符、控制流、函数……这些是编程的基本功,就像习武之人需要先学会基本招式一样。

但光有基本招式是不够的,你还需要趁手的兵器。C++ 的标准库(Standard Library)就是这样一个"军械库",里面有各种各样的工具,可以帮助我们更高效地完成任务。


什么是标准库

标准库是 C++ 语言规范的一部分,由一系列预先编写好的代码组成。这些代码实现了许多常用的功能,比如输入输出、字符串处理、数学运算、容器、算法等等。

使用标准库,我们就不需要从零开始编写这些功能。这就像你做饭时不需要自己种菜、磨面粉一样——超市里有现成的食材,你只需要买回来烹饪即可。

我们其实已经在使用标准库了。还记得吗?

#include <iostream>

std::cout << "Hello!" << std::endl;

iostream 就是标准库的一部分,它提供了输入输出功能。coutcinendl 都是标准库提供的对象。


命名空间 std

标准库中的所有内容都被放在一个名为 std命名空间中。命名空间是一种组织代码的方式,可以避免名字冲突。

要使用标准库中的内容,有几种方式:

方式一:每次使用时加上 std:: 前缀

std::cout << "Hello" << std::endl;
std::string name = "Alice";
std::vector<int> numbers;

方式二:使用 using 声明

方式三:使用 using namespace 指令

using namespace std; 会将整个 std 命名空间的内容引入当前作用域,使用起来最方便。但在大型项目中,这种做法可能会导致名字冲突,因此很多人推荐只在小程序或函数内部使用。


常用的标准库头文件

标准库被组织成多个头文件,每个头文件提供特定的功能:

头文件
功能

<iostream>

输入输出流

<string>

字符串类

<vector>

动态数组

<array>

固定大小数组(C++11)

<list>

双向链表

<map>

关联容器(键值对)

<set>

集合容器

<algorithm>

常用算法(排序、查找等)

<cmath>

数学函数

<cstdlib>

通用工具函数

<fstream>

文件输入输出

<sstream>

字符串流

<memory>

智能指针

<utility>

实用工具(如 pair)

要使用某个功能,首先需要包含对应的头文件:


一个简单的例子

让我们用标准库编写一个程序,读取一些数字,排序后输出:

在这个例子中,我们用到了:

  • vector:动态数组,可以自动扩展大小

  • push_back:向数组末尾添加元素

  • sort:排序算法

  • begin()end():返回迭代器,表示容器的起始和结束位置

  • 范围 for 循环(for (int x : numbers)):遍历容器中的所有元素

看到了吗?使用标准库,我们只需几行代码就实现了数组的动态管理和排序,而不需要自己编写复杂的数据结构和算法。


数学函数

<cmath> 头文件提供了常用的数学函数:


为什么要学习标准库

  1. 提高效率:不需要重复造轮子,专注于业务逻辑。

  2. 代码质量:标准库经过广泛测试,比自己实现更可靠。

  3. 可移植性:标准库在所有支持 C++ 的平台上都可用。

  4. 性能优化:标准库的实现通常经过高度优化。

学习使用标准库,是成为一名合格 C++ 程序员的必经之路。

在接下来的章节中,我们将详细学习标准库中最常用的几个组件:字符串、向量、迭代器和数组。它们是处理数据的基础工具,掌握了它们,你就能更加得心应手地编写 C++ 程序。


习题

  • 使用 <cmath> 中的函数,编写一个程序计算直角三角形的斜边长度(已知两条直角边)。

  • 使用 vectorsort,编写一个程序对用户输入的字符串按字母顺序排序。

Last updated