28.C++ STL全面解析:组成、容器、迭代器及使用指南

一、STL是什么?

STL英文全称为Standard Template Library,常被称为标准模板库或者泛型库

里面包含有大量的模板类和模板函数,是C++提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。

从根本上来说,STL 是一些容器算法和一些其他组件的集合,比如我们最常见的vector, map等等,就属于STL

它其中最重要的概念就是模板,以达到泛型编程的目的,不清楚的请先阅读另外一篇文章:模板

二、STL组成

STL共有6大组件,包含了13个头文件。

首先是6大组件:

组件 功能
容器 一些封装好的数据结构模板类,比如vector,list等等
算法 STL提供了100个左右的数据结构算法, 它们也都被设计成了一个个模板函数,大部分包含在头文件algorithm中,少部分包含在numeric
迭代器 我们对STL中容器的读写操作,都是通过这个迭代器完成的,使用起来和指针很像,相当于指针的一种抽象
函数对象 类将()运算符重载位成员函数,这个类就称为函数对象类, 这个类的实例对象就是函数对象,又称为仿函数
适配器 让一个类的接口适配成用户的指定形式,让原本不能一起工作的两个类在一起工作
内存分配器 为上面的容器模板类提供自定义的内存申请和释放功能, 除非有特殊需求,否则我们一般用不着,默认即可

所在的头文件有以下这些:

iterator function vector
list queue stack
deque set map
algorithm numeric memory
utility

需要注意的是,所有的STL内容, 均在std这个命名空间之内。

这是很常见的错误, 一旦你前面没写using namespace std;, 那么就会给你一直报错,特别是一些stl的算法函数, 大家很容易忘记这些函数还需要一个std命名空间才能使用。

三、STL容器

所谓容器, 就是帮助我们管理内存, 存储数据的结构。

这样我们就不用自己去亲自newdelete内存,可以极大提高我们的程序开发效率。

比如vector,我们只需要通过函数调用,来达到存储访问删除数据等功能,而完全无需自己操心内存的管理

STL容器也有三个类别,分别是序列容器排序容器哈希容器

  • 序列容器
作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux