迭代器是一个对象,就像用于对容器的元素进行迭代的指针一样。使用迭代器的主要优点是创建一个公共接口,并使算法不受用于实现该接口的容器类型的影响。
在C ++标准库中有迭代器的类型-
转发迭代器
双向迭代器
输入迭代器
输出迭代器
随机访问迭代器
该程序将检查数据结构使用了上述哪些迭代器。
有一些因素可用于确定使用的迭代器的类型。
typeid,在运行时返回类型标识信息。
iterator traits,定义迭代器具有的属性。
迭代器类别用于定义与它们限定的迭代器所属的类别。
#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