顺序迭代器——遍历型迭代器
1.iterator 正向迭代器常迭代器
//函数模板,正向打印容器内元素
template<typename CON>
void show(CON& src)
{
typename CON::iterator it = src.begin();
for (; it != src.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
2.reverse_iterator 反向迭代器 常迭代器
//函数模板,反向打印容器内元素
template<typename CON>
void show_reverse(CON& src)
{
typename CON::reverse_iterator it = src.rbegin();
for (; it != src.rend(); it++)
{
cout << *it << " ";
}
cout << endl;
}
3.const_iterator 常量正向迭代器
//函数模板,常量正向打印容器内元素
template<typename CON>
void show_const(const CON& src)
{
typename CON::const_iterator it = src.cbegin();
for (; it != src.cend(); it++)
{
cout << *it << " ";
}
cout << endl;
}
4.reverse_const_iterator 常量反向迭代器
//函数模板,常量反向打印容器内元素
template<typename CON>
void show_reverse_const(CON& src)
{
typename CON::const_reverse_iterator it = src.crbegin();
for (; it != src.crend(); it++)
{
cout << *it << " ";
}
cout << endl;
}
插入型迭代器
头文件#include
insert_iterator——随机插入型迭代器
指定插入位置插入后it自动++
vector<int> v1;
vector<int> v2;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
insert_iterator<vector<int>> it(v2, v2.begin());
for (int i = 0; i < 10; i++)
{
*it = i + 100;
}
show(v2);
//insert_iterator<vector<int>> it1(v2, v2.begin()+1);
//函数模板封装类模板对象的产生
Insert(v1.begin()+4, v1.begin()+7, minserter(v2, v2.begin() + 1));
show(v2);
back_insert_iterator——后插型迭代器
back_insert_iterator<vector<int>> it2(v2);
*it2 = 999;
//Insert(v1.begin(),v1.begin()+3,it2);
Insert(v1.begin(), v1.begin() + 3, back_inserter(v2));
show(v2);
front_insert_iterator——前插型迭代器
list<int> list1;
for (int i = 0; i < 10; i++)
{
list1.push_back(i);
}
front_insert_iterator<list<int>> it3(list1);
auto it4 = front_inserter(list1);
*it3 = 888;
*it4 = 777;
show(list1);
流迭代器
输入输出流迭代器
ostream_iterator<int> ito(cout, " ");
for (int i = 0; i < 10; i++)
{
ito = i;
}
cout << endl;
Insert(list1.begin(),list1.end(),ito);
cout << endl;
istream_iterator<int> iti(cin);
int a;
a = *iti;
ito = a;
return 0;