每个容器都有对应的迭代器类别,如何输出?这里用了一个function template。对于指定的类型,调用特定的函数,这个函数的输入是指定的类型,输出是类型的字符串。
这个函数模板就相当于一个抽象。
#include<iostream>
#include<array>
using namespace std;
void _display_category(random_access_iterator_tag)
{
cout << "random_access_iterator" << endl;
}
void _display_category(bidirectional_iterator_tag)
{
cout << "bidirectional_iterator" << endl;
}
void _display_category(forward_iterator_tag)
{
cout << "forward_iterator" << endl;
}
void _display_category(output_iterator_tag)
{
cout << "output_iterator" << endl;
}
void _display_category(input_iterator_tag)
{
cout << "input_iterator" << endl;
}
template<typename I>
void display_category(I itr)
{
typename iterator_traits<I>::iterator_category cagy;
_display_category(cagy);
}
int main()
{
cout << "\ntest_iterator_category()...." << endl;
display_category(array<int, 10>::iterator());
return 0;
}