目錄
一.迭代器
二.?函數對象
三.?適配器
一.迭代器
是一種通用的指針類型,可以用來遍歷 STL 容器中的元素。
具有以下作用和意義:
- 提供一種通用的方式來訪問容器中的元素。
- 允許對不同類型的容器進行統一的操作。
- 增強了代碼的靈活性和可擴展性。
一些常用的 API 及其詳解如下:
begin()
:返回容器中第一個元素的迭代器。end()
:返回超出容器末尾的迭代器。++iter
:向前移動迭代器。--iter
:向后移動迭代器。
下面是一個簡單的示例代碼:
#include <vector>
#include <iostream>int main() {std::vector<int> numbers = { 1, 2, 3, 4, 5 };std::vector<int>::iterator iter = numbers.begin();while (iter != numbers.end()) {std::cout << *iter << " ";++iter;}return 0;
}
在這個示例中,通過迭代器?iter
?遍歷了?numbers
?容器中的每個元素,并輸出它們。
二.?函數對象
是一種可調用的對象,用于各種算法中。
作用和意義:
- 提供了一種通用的方式來傳遞自定義的操作。
- 增強了算法的靈活性和可擴展性。
- 可以封裝復雜的邏輯,使代碼更簡潔、易維護。
常用 API 詳解:
operator()
:用于定義函數對象的調用操作。- 可以接受參數,并返回特定類型的結果。
下面是一個簡單的示例代碼:
#include <algorithm>
#include <vector>
#include<iostream>// 自定義函數對象,用于比較兩個整數的大小
struct IntComparer {bool operator()(int a, int b) {return a < b;}
};int main() {std::vector<int> numbers = { 5, 3, 1, 4, 2 };// 使用自定義的函數對象進行排序std::sort(numbers.begin(), numbers.end(), IntComparer());// 輸出排序后的元素for (int num : numbers) {std::cout << num << " ";}return 0;
}
在上述示例中,定義了一個自定義的函數對象?IntComparer
,它實現了比較兩個整數大小的邏輯。然后,使用這個函數對象作為參數傳遞給?std::sort()
?算法,對?numbers
?容器進行排序。
三.?適配器
是一種將一個類或函數轉換為符合特定需求的接口的工具。
作用和意義:
- 提供了一種方便的方式來適配不同的需求。
- 增加了代碼的靈活性和可重用性。
- 使得原本不符合特定接口的類或函數能夠在特定場景中使用。
常用 API 詳解:
std::adapter
:提供了一些常見的適配器類型,如stack
、queue
等。push()
:向適配器中添加元素。pop()
:從適配器中取出元素。
下面是一個簡單的示例代碼:
#include <stack>
#include <iostream>int main() {std::stack<int> myStack;myStack.push(5);myStack.push(3);myStack.push(1);while (!myStack.empty()) {int element = myStack.top();std::cout << element << " ";myStack.pop();}return 0;
}
在上述示例中,使用std::stack
適配器來實現棧的操作。通過push()
方法向棧中添加元素,通過pop()
方法從棧中取出元素