#include <string>
#include <iterator>
#include <algorithm>
using namespace std;
string str = "this 'sentence' is a test";
cout<<str<<endl;
string::iterator it1 = find(str.begin(), str.end(), '/'');
string::iterator it2 = find(++it1, str.end(), '/'');
cout<<string(it1, it2)<<endl;
string::reverse_iterator rit1 = find(str.rbegin(), str.rend(), '/'');
string::reverse_iterator rit2 = find(++rit1, str.rend(), '/'');
cout<<string(rit1, rit2)<<endl;
cout<<string(rit2.base(), rit1.base())<<endl;
getchar();
return 0;
}
輸入迭代器 (input iterator) |
讀,不能寫。支持的操作集:==, !=, 前綴++, 後綴++, *, ->。例如,find, accumulate算法要求這類迭代器。 |
輸出迭代器 (output iterator) |
寫,不能讀。支持的操作集:前綴++, 後綴++, *(只能出現在賦值運算的左操作數上)。推出迭代器要求每個迭代器必須正好寫入一次。例如,ostream_iterator是輸出迭代器,copy算法使用這類迭代器。 |
前向迭代器(forward iterator) | 讀和寫,支持輸入迭代器和輸出迭代器提供的所有操作,還支持對同一個元素的多次讀寫。例如,replace算法需要這種迭代器。 |
雙向迭代器(bidirectional iterator) | 讀和寫,除了支持前向迭代器的所有操作,還支持前綴--和後綴--,即支持雙向遍歷容器。例如,reverse算法要求這類迭代器。標準庫容器中提供的迭代器都至少達到雙向迭代器的要求。 |
隨機訪問迭代器(random-access iterator) | 讀和寫。提供在常量時間內訪問容器任意位置的功能。支持完整的迭代器操作集:1)關係運算:==, !=, <, <=, >, >=;2)算術運算:it + n, it - n, it += n, it -= n以及it1 - it2;3)下標運算:it[n],等價於*(it + n)。需要隨機訪問迭代器的泛型算法包括sort算法。例如,vector, deque, string迭代器是隨機訪問迭代器,用作訪問內置數組元素的指針也是隨機訪問迭代器。 |