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()。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dequeC++标准库中的一种容器,它是双端队列的意思。双端队列是一种可以从队列的前端和后端进行插入和删除操作的数据结构。在C++中,deque可以存储任意类型的数据,并且支持动态大小调整。deque中的元素可以通过普通迭代器、常量迭代器和逆转迭代器进行访问。 在deque中,元素的添加和删除操作可以在队列的前端和后端进行,并且插入和删除的时间复杂度都是O(1)。 在C++11中,可以使用emplace_back和emplace_front函数来在deque的尾部和头部插入元素,这些函数可以直接在已有的元素上构造对象,而不需要进行拷贝或移动操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C++ Deque的使用](https://blog.csdn.net/weixin_42587961/article/details/100305841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [deque容器](https://blog.csdn.net/m0_46376834/article/details/117335026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值