-
Notifications
You must be signed in to change notification settings - Fork 0
/
28_IteratorCategory.cpp
53 lines (43 loc) · 1.26 KB
/
28_IteratorCategory.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <cstdio>
#include <iostream>
#include <array>
#include <vector>
#include <list>
#include <forward_list>
#include <deque>
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 _dispaly_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 iter) {
typedef typename iterator_traits<I>::iterator_category cate;
_dispaly_category(cate());
// typename iterator_traits<I>::iterator_category cate;
// _dispaly_category(cate);
cout <<"typeid(iter).name()= "<< typeid(iter).name() << endl;
}
void test_iterator_category() {
cout << "\ntest_iterator_category.........\n" << endl;
display_category(array<int, 10>::iterator());
display_category(vector<int>::iterator());
display_category(list<int>::iterator());
display_category(forward_list<int>::iterator());
display_category(deque<int>::iterator());
}
int main() {
test_iterator_category();
return 0;
}