C++程式:查詢給定迭代器的型別
迭代器是一個類似於指標的物件,用於迭代容器的元素。使用迭代器的主要優點是建立公共介面,並使演算法不受用於實現它的容器型別的限制。
在C++標準庫中,迭代器型別包括:
- 前向迭代器
- 雙向迭代器
- 輸入迭代器
- 輸出迭代器
- 隨機訪問迭代器
程式旨在檢查資料結構使用了上述哪些迭代器。
有一些因素有助於確定使用的迭代器型別。
**typeid**,在執行時返回型別識別資訊。
**迭代器特性 (iterator traits)**,定義迭代器擁有的屬性。
**迭代器類別 (iterator category)** 用於定義迭代器所屬的類別。
示例
#include <bits/stdc++.h> using namespace std; template <class T> string iteratortype(T iterator){ if (typeid(typename iterator_traits<T>::iterator_category) == typeid(input_iterator_tag)) return "Input"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(output_iterator_tag)) return "Output"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(forward_iterator_tag)) return "Forward"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(bidirectional_iterator_tag)) return "Bidirectional"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(random_access_iterator_tag)) return "Random_Access"; return "Missing"; } int main(){ vector<int> vec; auto iter = vec.begin(); cout <<iteratortype(iter) << " Iterator\n"; return 0; }
輸出
Random_Access Iterator
廣告