迭代器分为三种
iterator 正向迭代器
//iterator 正向迭代器 template<typename Con> void iterator_show(Con&con) { typename Con::iterator it = con.begin(); for(; it != con.end();it++) { cout<<*it<<" "; } cout<<endl; }
reverse_iterator 反向迭代器
//reverse_iterator 反向迭代器 template<typename Con> void reverse_iterator(Con&con) { typename Con::reverse_iterator it = con.rbegin(); for( ; it != con.rend(); it++) { cout<<*it<<" "; } cout<<endl;
const_iterator 常量正向迭代器
//const_iterator 常量正向迭代器 template<typename Con> void const_iterator(Con& con) { typename Con::const_iterator it = con.cbegin(); for( ;it!=con.cend();it++) { cout<<*it<<" "; } cout<<endl; }
const_reverse_iterator 常量反向迭代器
template<typename Con> void const_reverse_iterator(Con&con) { typename Con::const_reverse_iterator it = con.crbegin(); for(;it!=con.crend();it++) { cout<<*it<<" "; } cout<<endl; }
测试
//顺序迭代器测试代码 vector<int> v1; for (int i = 0; i < 10; i++) { v1.push_back(i); } show_con(v1); reverse_show(v1); const vector<int>v2(v1.begin(), v1.end()); const_show(v2); const_reverse_show(v2);
随机插入型迭代器
template<typename Insert_It,typename IT> void insert(const IT&first,const IT&last, Insert_It insert_it) { IT tmp=first; for(; tmp != last;tmp++) { *Insert_It = *tmp; } } //定义在主函数内 int main() { vector<int>v1; vector<int>v2; insert_iterator<vector<int>>it(v2,v2.begin()); { *it = 100+i; } insert_iterator<vector<int>> it1(v2,v2.begin()+1); insert(v1.begin(),v1.end(),it1); //show(v2);输出序列 }