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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++中std::find函数介绍和使用场景

    C++中std::find函数介绍和使用场景

    std::find函数是一个非常实用的通用查找算法,适用于各种场景,本文主要介绍了C++中std::find函数介绍和使用场景,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • C++中的常用库

    C++中的常用库

    这篇文章主要介绍了C++中的常用库,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • c语言算术运算符越界问题解决方案

    c语言算术运算符越界问题解决方案

    大量的安全漏洞是由于计算机算术运算的微妙细节引起的, 具体的C语言, 诸如符号数和无符号数之间转换, 算术运算的越界都会导致不可预知的错误和安全漏洞, 具体的案例数不胜数.
    2012-11-11
  • C++ 实现桶排序的示例代码

    C++ 实现桶排序的示例代码

    桶排序或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子,本文详细的介绍了如何实现,感兴趣的可以了解一下
    2021-07-07
  • c++11新特性多线程操作实战

    c++11新特性多线程操作实战

    这篇文章主要介绍了c++11新特性多线程操作实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • C语言详细讲解位运算符的使用

    C语言详细讲解位运算符的使用

    C语⾔既具有⾼级语⾔的特点,⼜具有低级语⾔的特性,如⽀持位运算就是其具体体现。这是因为,C语⾔最初是为取代汇编语⾔设计系统软件⽽设计的,因此C语⾔必须⽀持位运算等汇编操作。位运算就是对字节或字内的⼆进制数位进⾏测试、抽取、设置或移位等操作
    2022-04-04
  • c++使用regex报错regex_error两种解决方案

    c++使用regex报错regex_error两种解决方案

    C++正则表达式是一个非常强大和实用的工具,但是使用它们时需要注意仔细检查代码是否符合语法规则,这篇文章主要给大家介绍了关于c++使用regex报错regex_error的两种解决方案,需要的朋友可以参考下
    2024-03-03
  • typedef和#define的用法以及区别

    typedef和#define的用法以及区别

    以下是对C/C++语言中,typedef和#define的用法以及区别进行了详细的介绍,需要的朋友可以过来参考下
    2013-10-10
  • MFC控件之CListCtrl的应用实例教程

    MFC控件之CListCtrl的应用实例教程

    这篇文章主要介绍了MFC控件中CListCtrl的应用方法,包括了针对表格的一些操作,是MFC中比较重要的一个控件类,需要的朋友可以参考下
    2014-08-08
  • C++实现并优化异常系统

    C++实现并优化异常系统

    异常处理是C++的一项语言机制,用于在程序中处理异常事件,下面这篇文章主要给大家介绍了关于C++中异常的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08

最新评论