【C++】简单学——迭代器

本文详细解释了C++中迭代器的概念,展示了如何正确使用迭代器访问vector数组元素,以及纠正了常见的错误,如误用`<`符号判断迭代器位置。
摘要由CSDN通过智能技术生成

完整正确代码演示:

int main()
{
	vector<int> v;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
	}
	在v数组中,有09的数字

	//迭代器访问方法
	//1、先声明你接下来可能会用到的迭代器
	vector<int>::iterator;//或者直接写vector<int>::iterator vit;
	//2.1直接用迭代器(如果上面提前定义了vit,下面的for循环就不用再定义了)
	for (vector<int>::iterator vit = v.begin(); vit != v.end(); vit++)
	{
		cout << *vit;
	}

	return 0;
}

迭代器的概念:

迭代器本质上就是类似指针的对象,用于在容器中指示元素的位置

迭代器的使用要求:

1、当你接下来要使用迭代器时需要提前声明你要使用的那款迭代器

2、用一个变量来接收你的迭代器的值,然后就可以把他当成类似于指针的东西进行使用了

坑:

for (v.begin(); v.begin() < v.end(); v.begin()++)
{
cout << *arr2.begin();
}

如果是刚开始写,有可能就会犯这种错误了
这种错误最根本的原因在于错将begin()单纯当成了一个可移动的、指向数组开头的指针

关键分析:

1、(begin是不动的)
begin() 返回的是指向容器第一个元素的迭代器,而不是一个指针, begin() 进行递增操作,并不会使它指向容器中的下一个元素,而是仍然指向容器的第一个元素
2、(it是为了记录位置,以便之后能动)
使用 it(或者其他合适的变量名)来接收 begin() 的返回值是为了能够在循环中逐步移动并访问容器中的每个元素

it 接收 begin() 后,相当于你拿到了队伍的起始位置,并将这个位置标记存在了 it 中。接下来,你可以通过递增 it 来移动这个位置标记,就像在排队时你可以通过一步步向前走来移动你的位置标记一样

改正后做法:

for (vector<int>::iterator vit = v.begin(); vit < v.end(); vit++)
{
cout << vit;
}

但该代码仍然存在错误之处

1、判断条件使用了 <
2、函数体中打印的是指针而不是元素(vit)

关键分析:

1、在 C++ 中,使用 < 来判断迭代器是否达到容器的末尾通常是不可取的,因为这样无法确定迭代器的具体位置是否达到了末尾。迭代器虽然可以进行比较,但迭代器不像整数那样简单,因此在比较时应该使用更安全和精确的方式
2、迭代器本质上就是类似指针的对象,用于在容器中指示元素的位置。因此,当你使用迭代器来遍历容器时,需要对迭代器进行解引用以访问容器中的元素

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CtrlZ大牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值