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

更新於:2019年9月19日

164 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告