目录
专栏:C++学习笔记
1. 什么是STL
STL(Standard Template Library,标准模板库)是C++标准库的重要组成部分。它不仅是一个可复用的组件库,而且是一个包含数据结构与算法的软件框架。STL为开发者提供了多种高效、灵活且可扩展的模板化工具,使得复杂的程序开发变得更加简单和高效。
代码示例:使用STL的vector
容器
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
运行结果:
小李很执着理解:
vector
就像一个可以自动扩展的数组,你可以随意添加或删除元素。- 在上面的例子中,创建了一个包含数字1到5的
vector
,并输出这些数字。
2. STL的版本
STL经历了多个版本的发展,不同版本有不同的特点和应用场景:
- 原始版本:由Alexander Stepanov和Meng Lee在惠普实验室完成的原始版本。这个版本是开源的,允许任何人任意使用、修改和传播。
- P. J. 版本:由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用。这一版本不能公开或修改,其缺陷在于可读性较低,符号命名比较怪异。
- RW版本:由Rouge Wage公司开发,继承自HP版本,被C++ Builder采用,也不能公开或修改,但可读性一般。
- SGI版本:由Silicon Graphics Computer Systems公司开发,继承自HP版本,被GCC(Linux)采用。这个版本可移植性好,可公开、修改甚至商业使用。从命名风格和编程风格上看,阅读性非常高。
小李很执着理解:
- 不同版本的STL是由不同的人和公司开发的,有些版本是开源的,有些版本是商业化的。
- 学习STL时主要参考SGI版本,因为它的可读性和移植性都很好。
3. STL的六大组件
STL由以下六大组件组成:
1.容器(Container):
用于存储和组织数据的对象,如vector
、list
、deque
、set
、map
等。
代码示例:使用map
容器
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> age;
age["Alice"] = 30;
age["Bob"] = 25;
for (const auto& pair : age) {
std::cout << pair.first << " is " << pair.second << " years old." << std::endl;
}
return 0;
}
运行结果: