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
广告