C++ Deque容器与迭代器

C++ Deque容器与迭代器

开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年07月08日

deque.begin();返回容器中第一个元素的迭代器。
deque.end();返回容器中最后一个元素之后的迭代器。
deque.rbegin();返回容器中倒数第一个元素的迭代器。
deque.rend();返回容器中倒数最后一个元素之后的迭代器
例子:

#include  <iostream>
#include <deque>
using  namespace std;
void main()
{
	deque<int> deqInt;
	for (int i = 0; i < 10; i++)
	{
		deqInt.push_back(i);
	}
	cout << "------------正向--------------" << endl;
	for (deque<int>::iterator it = deqInt.begin(); it != deqInt.end(); ++it)
	{
		cout << *it;
		cout << " ";
	}
	cout << endl;
	cout << "-----------反向--------------" << endl;
	for (deque<int>::reverse_iterator rit = deqInt.rbegin(); rit != deqInt.rend(); ++rit)
	{
		cout << *rit;
		cout << " ";
	}
	cout << endl;
}

在这里插入图片描述
从结果图中我们 可以看得出来迭代器可以从我们deque deqInt;的开始遍历数据,也可以反向输出 ,但是我们需要用到的是deque::reverse_iterator rit = deqInt.rbegin();rit != deqInt.rend(); ++rit这样子我们的迭代器指针一开始就指在我们元素9的位置了然后一直加就往回一直遍历。
deque 中查找某个数在数组下标的值

#include  <iostream>
#include <deque>
using  namespace std;
void main()
{
	deque<int> d1;
	for (int i = 0; i < 10; i++)
	{
		if (i == 6) {
			d1.push_back(-33);
		}
		else 
			d1.push_back(i);
		
	}
	cout << "------------正向--------------" << endl;
	for (deque<int>::iterator it = d1.begin(); it != d1.end(); ++it)
	{
		cout << *it;
		cout << " ";
	}
	cout << endl;
	cout << "-----------反向--------------" << endl;
	for (deque<int>::reverse_iterator rit = d1.rbegin(); rit != d1.rend(); ++rit)
	{
		cout << *rit;
		cout << " ";
	}
	cout << endl;
	deque<int>::iterator it = find(d1.begin(), d1.end(), -33); //find 为一个算法
	
		if (it != d1.end())
		{
			cout << "-33 数组下标是" << distance(d1.begin(), it) << endl;
			//distance 为求偏移量的函数。 注意数组下标是从 0 开始的
		}
		else
		{
			cout << "没有找到值为-33 的元素" << endl;
		}
	//返回的是第一个值为-33 的元素的位置
}

在这里插入图片描述
从图中可以看出,我们的容器里边是有-33的 if (i == 6) {d1.push_back(-33); }因为我是在i==6的时候进行新增了一个-33的元素也就是我们的七个元素为-33;当我把它注销掉的时候,那么来看一下结果图
在这里插入图片描述
从图中我们就可以看出我们的容器并没有-33的元素,所以没有找到我们所要找的元素,那个时候我们的迭代器指针就会等于我们d1.end()就相当于it == d1.end()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值