0. 前言
C++语言的一大优势就是便于软件的重用,而重用体现在两方面:
1. 面向对象思想:继承和多态,标准类库
2. 泛程序设计(Generic Programming)思想:模板机制,标准模板库STL(Standard Template Library)。简单来说就是使用模板的程序设计方法。
标准模板库STL就是常用的数据结构和算法的模板的集合,写成模板之后,不管以后放什么对象,就不用重新写数据结构和算法了:
- 数据结构:比如链表、数组、二叉树
- 算法:比如排序、查找
1.0 STL基本概念
主要包括三类:
1. 容器:可容纳各种数据类型的通用数据结构
2. 迭代器:类似于指针,可用于存取容器中的元素
3. 算法:用来操作容器中的元素的函数模板
2.0 容器概述
容器是用于存放各种数据类型的通用数据结构,主要分为三种,简单画了一个思维导图如下:
3.0 练手的一个例子
这个例子主要是关于容器的创建,加入元素,通过迭代器访问容器元素,并通过find()函数寻找某个元素,代码如下:
#include "pch.h"
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
//**正向迭代器**//
vector<int> v;
v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4);
vector<int>::iterator p; //创建迭代器p
for (p = v.begin();p<v.end();p++)
cout << *p << " ";
cout << endl;
//**反向迭代器**//
vector<int>::reverse_iterator rp;
for (rp = v.rbegin();rp < v.rend();rp++) //rp++同样也是反向加
cout << *rp << " ";
cout << endl;
//**find()函数应用**//
vector<int>::iterator fp;
fp = find(v.begin(), v.end(), 3); //三个参数,开始和结束迭代器,寻找的元素值
if (fp != v.end())
cout << *fp << " Found!" << endl;
else
{
cout << "Not Found!" << endl;
}
fp = find(v.begin() + 1, v.end() - 2, 4); //原容器[1 2 3 4],现在容器[2,3)不包含3
if (fp != v.end())
cout << *fp << endl; //找不到,返回最后迭代器对应值,即3
}