C/C++教程

C++迭代器

本文主要是介绍C++迭代器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

  • 一、C++迭代器的分类
    • 1.顺序型迭代器
    • 2.插入型迭代器

一、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);输出序列
}
这篇关于C++迭代器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!