1.什么是STL?
-
STL(Standard Template Library)是C++的标准模板类库。STL是一个功能强大的基于模板的容器库,通过直接使用这些现成的标准化组件可以大大提高算法设计的效率和可靠性。
-
STL主要由container(容器)、algorithm(算法)和iterator(迭代器)三大部分构成:
1.容器: 用于存放数据对象(元素) 2.算法: 用于操作容器中的数据对象 3.迭代器: 用于访问容器中的数据对象
容器、算法和迭代器成为STL的三大件,它们之间的关系如下图所示:
1.什么是容器?
-
一个容器就是一种数据结构,例如链表、栈、队列等等。这些在STL中都已经实现好了,在算法设计过程中我们可以直接使用它们。
-
STL容器部分主要由头文件<vector、<string、<list、<set等组成。下面是一些常用的头文件以及说明:
注:为了避免名字冲突,我么在使用STL时一般要加如下实例的代码:#include<iostream> #include<vector> //这一行代码一般这样引入 using namespace std; int main(){ return 0;}
2.什么是STL算法?
-
STL算法一般用来操作容器中数据的模板函数。例如:sort()对一个vector中的数据进行排序。
2.STL算法部分主要由头文件<algorithm,numeric、functional。最常用的一般就是algorithm这个头文件,其中有大量的模板函数组成。
实例:对整形数组的排序#include<iostream> #include<algorithm> //定义新的命名空间 using namespace std; int main() { int a[] = {5, 2, 1, 3, 4, 6}; sort(a, a+6); //第一个参数: a是数组的名字(实际上是一个指针) , //第二个参数: 是数组的名字加要排序的长度 (根据需要 可以选择对数组中的一部分进行排序 ) for (int i = 0; i < 6; i++) cout << a[i] << " "; //结果:1 2 3 4 5 6 return 0; }
3.什么是STL迭代器?
- STL迭代器用于访问容器中的数据对象。
每个容器都有自己的迭代器,只有容器自己知道如何访问自己的元素。迭代器像c/C++中的指针,算法通过迭代器来定位和操作容器中的元素。 - 常用的迭代器:
- iterator : 指向容器中存放元素的迭代器,用于正向遍历容器中的元素。并且可以修改容器中的元素。
- reverse_iterator : 反向遍历,并且可以修改容器中的值。
- const_iterator : 表示正向遍历,但是不可以修改值,只能读取容器中的元素 。
- const_reverse_iterator: 即表示一个反向遍历,仅可读的迭代器。
实例: 用迭代器输出 一个存放int型整数的vector容器中的数据对象(值)
#include<iostream>
//引用vector头文件
#include<vector>
//使用命名空间
using namespace std;
int main() {
vector<int> vector1; //定义一个vector的容器变量vector1
vector<int>::iterator it; // 定义一个正向遍历容器的迭代器
//向vector1容器的末尾插入元素
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
//遍历容器中的值(数据对象)
for (it = v1.begin(); it != v1.end(); ++it) {
cout << *it <<endl; //结果: 1 2 3
}
return 0;
}
2.STL容器的用法
有关常用的STL容器的用法稍后进行更新。。。