STL庫
什么是STL庫
? ? ? ??C++標準模板庫(Standard Template Libiary)基于泛型編程(模板),實現常見的數據結構和算法,提升代碼的復用性和效率。
STL庫有哪些組件
????????STL庫由以下組件構成:
● 容器(Containers):存儲和管理數據,
? ????????○ 序列容器:vector、list、deque
? ????????○ 關聯容器:set、map
? ????????○ 無序關聯容器:unordered_set/unordered_map
● 迭代器(Iterators):提供訪問容器的統一接口
● 算法(Algorithms):操作數據的通用函數(如排序、查找)
● 函數對象(Functors):行為類似函數的對象(如仿函數、Lambda)
● 適配器(Adapters):修飾組件(如stack、queue基于deque實現)
序列容器、關聯容器、無序關聯容器
迭代器
????????迭代器提供了遍歷容器的統一接口,是一種對象,用于遍歷容器中的元素,類似指針;
● 輸入迭代器(Input Iterator):只能向前遍歷容器,每次只能讀取一個元素。
● 輸出迭代器(Output Iterator):只能向前遍歷容器,每次只能寫入一個元素。
● 前向迭代器(Forward Iterator):支持輸入和輸出迭代器的操作,還能多次遍歷同一范圍。
● 雙向迭代器(Bidirectional Iterator):支持前向迭代器的操作,還能反向遍歷容器。
● 隨機訪問迭代器(Random Access Iterator):支持雙向迭代器的操作,還能進行隨機訪問。
算法
????????算法庫提供了一系列用于操作容器元素的通用函數,像排序、查找、替換等
#include <iostream>
#include <vector>
#include <algorithm>using namespace std;int main() {vector<int> vec = {3, 1, 2,9,2};sort(vec.begin(), vec.end()); // 對容器元素進行從小到大排序,sort(起止位置,結束位置)auto it = find(vec.begin(), vec.end(), 2); //find(起始位置,結束位置,要查找的值)if (it != vec.end()) {cout << "Found: " << *it << endl;}return 0;
}