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
}