[C++]迭代器

目录

一、迭代器

二、迭代器与算法配合使用

三、四种迭代器

[3.1、iterator 普通对象正向迭代器](#3.1、iterator 普通对象正向迭代器)

[3.2、const_iterator const对象正向迭代器](#3.2、const_iterator const对象正向迭代器)

[3.3、reverse_iterator 普通对象反向迭代器](#3.3、reverse_iterator 普通对象反向迭代器)

[3.4、const_reverse_iterator const对象反向迭代器](#3.4、const_reverse_iterator const对象反向迭代器)

一、迭代器

**迭代器是类似指针一样的抽象数据类型,迭代器提供了统一的方式来查看和修改容器中的数据。**对于不同的容器,迭代器的具体实现可能不同(可能是指针,也可能是类对象)。begin() 返回指向容器第一个元素的迭代器,end() 返回指向容器最后一个元素之后位置的迭代器,迭代器范围是左闭右开区间 [begin, end)

二、迭代器与算法配合使用

算法通过迭代器访问和操作容器中的元素,而无需知道容器的具体类型。C++标准库中的 std::reverse 函数模板,它展示了如何通过函数模板实现泛型算法,使其适用于不同的容器。

复制代码
//迭代器和算法配合使用
int main()
{
	string s1("hello world");
	reverse(s1.begin(), s1.end());

	string::iterator it = s1.begin();
	while (it != s1.end())
	{
		cout << *it << " ";
		it++;
	}
	cout << endl;

	vector<int> v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(3);
	v1.push_back(4);

	reverse(v1.begin(), v1.end());

	vector<int>::iterator vit = v1.begin();
	while (vit != v1.end())
	{
		cout << *vit << " ";
		vit++;
	}
	cout << endl;
	return 0;
}
//输出结果
//d l r o w   o l l e h
//4 3 2 1

三、四种迭代器

3.1、iterator 普通对象正向迭代器

复制代码
	string s1("hello world");
	//正向迭代器->可以读 可以修改 普通对象可以调用
	string::iterator it = s1.begin();
	while (it != s1.end())
	{
		(*it)++;
		cout << *it << " ";
		it++;
	}
	cout << endl;
//运行结果i f m m p ! x p s m e

3.2、const_iterator const对象正向迭代器

复制代码
void Func(const string& s)
{
	//const对象正向迭代器->只能读 不能修改 const对象调用
	string::const_iterator const_it = s.begin();
	while (const_it != s.end())
	{
		//*const_it++;//error const对象的正向迭代器只能读,不能修改
		cout << *const_it << " ";
		const_it++;
	}
	cout << endl;
}
int main()
{
	string s1("hello world");
	Func(s1);
}
//输出结果h e l l o   w o r l d

3.3、reverse_iterator 普通对象反向迭代器

复制代码
	//反向迭代器->可以读 可以修改 普通对象可以调用
	string s1("hello world");	
    string::reverse_iterator rit = s1.rbegin();
	while (rit != s1.rend())
	{
		(*rit)++;
		cout << *rit << " ";
		rit++;
	}
	cout << endl;
//输出结果 e m s p x ! p m m f i

3.4、const_reverse_iterator const对象反向迭代器

复制代码
void Func(const string& s)
{
	////const对象反向迭代器 const对象的反向迭代器只能读,不能修改
	string::const_reverse_iterator const_rit = s.rbegin();
	while (const_rit != s.rend())
	{
		////*const_rit += 3;//error 不能修改
		cout << *const_rit << " ";
		const_rit++;
	}
	cout << endl;
}
int main()
{
	string s1("hello world");
	Func(s1);
}
//输出结果d l r o w   o l l e h
相关推荐
郭涤生5 小时前
布隆过滤器
c++
喵了meme5 小时前
C语言实战4
c语言·开发语言
码界奇点5 小时前
Python从0到100一站式学习路线图与实战指南
开发语言·python·学习·青少年编程·贴图
智者知已应修善业5 小时前
【求中位数】2024-1-23
c语言·c++·经验分享·笔记·算法
9ilk5 小时前
【C++】--- 特殊类设计
开发语言·c++·后端
sali-tec6 小时前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
生骨大头菜7 小时前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我7 小时前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
消失的旧时光-19438 小时前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
咖啡续命又一天8 小时前
Trae CN IDE 中 Python 开发的具体流程和配置总结
开发语言·ide·python·ai编程