STL迭代器
顺序迭代器——遍历型迭代器
- iterator 正向迭代器
函数模板,正向打印容器内元素
template <typename CON>
void show(CON &src)
{
typename CON::iterator it = src.begin();
for (; it != src.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
- 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;
}
- 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;
}
- 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;
}
插入型迭代器
- insert_iterator 随机插入型迭代器 ——依赖insert
template <typename INSERT_IT,typename IT>
void Insert(const IT&first,const IT&last,INSERT_IT insert_it)
{
TT tmp = first;
for (; tmp != last; tmp++)
{
*insert_it = *tmp;
}
}
- back_insert_iterator 后插型迭代器 ——push_back
back_insert_iterator<vector> it2(v2);//后插型迭代器
template<typename CON>
back_insert_iterator<vector<int>> mbackinserter(CON& con)
{
return back_insert_iterator<vector<int>>(con);
}
- front_insert_iterator 前插型迭代器 ——push_front
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);
流迭代器
- ostream_iterator 输出流迭代器
ostream_iterator<int> ito(cout, " ");
for (int i = 0; i < 10; i++)
{
ito = i;
}
cout << endl;
Insert(list1.begin(), list1.end(), ito);
- istream_iterator 输入流迭代器
istream_iterator<int> iti(cin);
int a;
a = *iti;
ito = a;