目录
一、C++迭代器的分类
迭代器分为三种
- 顺序型迭代器
- 插入型迭代器
- 流迭代器
1.顺序型迭代器
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);
2.插入型迭代器
随机插入型迭代器
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);输出序列
}