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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告