C ++迭代器iterator在string中使用方法介绍

 更新时间:2022年10月28日 14:14:33   作者:潮.eth  
迭代器是一种检查容器内元素并遍历元素的数据类型。迭代器是一个变量,提供对一个容器中的对象的(间接)访问方法,并且定义了容器中对象的范围。迭代器可以指向容器中的某个元素,通过迭代器就可以对非数组(存储空间不连续)的数据结构进行遍历

一、正向迭代器

【例子】

//正向迭代器
void test1()
{
	string str1 = "abcdef";
	cout << "读取字符串:" << endl;
	string::iterator it1 = str1.begin();
	while (it1 != str1.end())
	{
		cout << *it1 << " ";
		it1++;
	}
	cout << endl;
	cout << "每个字母向后移动一位:" << endl;
	string::iterator it2 = str1.begin();
	while (it2 != str1.end())
	{
		*it2 +=1;
		cout << *it2 << " ";
		it2++;
	}
	cout << endl;
}

【运行结果】

二、正向迭代器(只读数据)

const_iterator begin( ) const;

这种迭代器,只支持读,不支持修改数据。

【例子】

//只读正向迭代器
void test2()
{
	const string str1 = "abcdef";
	cout << "只能读取字符串:" << endl;
	string::const_iterator it1 = str1.begin();
	while (it1 != str1.end())
	{
		cout << *it1 << " ";
		it1++;
	}
	cout << endl;
}

【问题】

为什么不能直接在 string::iterator it 前面加const?

答:这样的话,const修饰的是it,it将无法被修改,并不是*it无法被修改。

it无法被修改的后果是无法遍历。

三、反向迭代器

作用:从后往前读。

【例子】

//反向迭代器
void test3()
{
	string str1 = "abcdef";
	cout << "反向读取字符串:" << endl;
	string::reverse_iterator it1 = str1.rbegin();
	while (it1 != str1.rend())
	{
		*it1 += 1;
		cout << *it1 << " ";
		it1++;
	}
	cout << endl;
}

【运行结果】

四、反向迭代器(只读)

【例子】

//反向迭代器(只读)
void test4()
{
	const string str1 = "abcdef";
	cout << "反向只读读取字符串:" << endl;
	string::const_reverse_iterator it1 = str1.rbegin();
	while (it1 != str1.rend())
	{
		cout << *it1 << " ";
		it1++;
	}
	cout << endl;
}

五、auto来替换这些特别长类型名

是不是感觉这些类型名特别长?别担心,用auto试试。

//auto
void test5()
{
	cout << "auto的演示" << endl;
	const string str1 = "abcdef";
	cout << "反向只读读取字符串:" << endl;
	auto it1 = str1.rbegin();
	while (it1 != str1.rend())
	{
		cout << *it1 << " ";
		it1++;
	}
	cout << endl;
}

到此这篇关于C ++迭代器iterator在string中使用方法介绍的文章就介绍到这了,更多相关C ++迭代器iterator内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 节序问题:解析大小的端判定

    节序问题:解析大小的端判定

    本篇文章是对大小的端判定进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言一级指针二级指针和三级指针区别及使用详解

    C语言一级指针二级指针和三级指针区别及使用详解

    这篇文章主要为大家介绍了C语言一级指针二级指针和三级指针,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 基于Matlab实现多目标粘液霉菌算法的示例代码

    基于Matlab实现多目标粘液霉菌算法的示例代码

    多目标粘液霉菌算法(MOSMA),这是最近开发的粘液霉菌算法(SMA)的多目标变体,用于处理工业中的多目标优化问题。本文将用Matlab实现这一算法,需要的可以参考一下
    2022-05-05
  • c++ vector模拟实现的全过程

    c++ vector模拟实现的全过程

    这篇文章主要给大家介绍了关于c++ vector的模拟实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • C++中线性代数计算Eigen库的使用教程详解

    C++中线性代数计算Eigen库的使用教程详解

    Eigen是一个基于线性代数的C++模板库,主要用于矩阵、向量、数值求解和相关算法,本文主要为大家简单聊聊Eigen库的使用,希望对大家有所帮助
    2023-12-12
  • C语言中位域的使用详解

    C语言中位域的使用详解

    位域是C语言中的一种高级功能,允许程序员为结构体的成员分配特定数量的位,本文主要为大家介绍了位域的使用以及优缺点,希望对大家有所帮助
    2023-07-07
  • 一篇文章带你了解C语言内存对齐公式

    一篇文章带你了解C语言内存对齐公式

    这篇文章主要介绍了C语言内存对齐,包括内存对其的基本概念及用法,以及注意事项,并以实例形式加以说明,需要的朋友可以参考下,希望能给你带来帮助
    2021-08-08
  • c++实现版本层次遍历功能

    c++实现版本层次遍历功能

    这篇文章主要介绍了c++实现版本层次遍历功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • C语言实现洗牌发牌小程序

    C语言实现洗牌发牌小程序

    这篇文章主要介绍了C语言实现洗牌发牌小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C语言实现简易的三子棋小游戏

    C语言实现简易的三子棋小游戏

    这篇文章主要为大家详细介绍了C语言实现简易的三子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论