C++STL详解之deque

往期文章,推荐阅读:

C++STL详解之vectoricon-default.png?t=N7T8https://blog.csdn.net/2301_79821509/article/details/141257591?spm=1001.2014.3001.5502

目录

一、deque介绍

二、deque使用

1、插入

第一种方法:push_back()

第二种方法.push_front()

2、删除

pop_front()和pop_back()

3、遍历

下标遍历

迭代器遍历

正向遍历

反向遍历


一、deque介绍

C++deque(双端队列)是C++标准模板库(STL)中的一种数据结构,它允许在两端进行插入和删除操作。deque是“double-ended queue”的缩写,可以理解为“双端队列”。

deque与vector类似,都是用动态数组实现的,但deque的插入和删除操作在两端都有较好的性能。它提供了以下几种操作:

  1. 在头部插入元素:在deque的头部插入一个新的元素。

  2. 在尾部插入元素:在deque的尾部插入一个新的元素。

  3. 在头部删除元素:将deque头部的元素删除。

  4. 在尾部删除元素:将deque尾部的元素删除。

  5. 访问元素:可以通过索引访问deque中的元素。

deque的特点是能够高效地在两端进行插入和删除操作,因此常用于需要频繁在头部和尾部操作的场景。

使用deque需要包含头文件<deque>,使用std命名空间。

二、deque使用

1、插入

deque可以在两端进行插入操作,包括在左侧插入和在右侧插入。下面是在deque中插入元素的几种方法:

第一种方法:push_back()

C++ deque(双端队列)是一种容器,可以在两端进行插入和删除操作。push_back()函数用于在deque的末尾插入一个元素。

以下是使用push_back()函数向deque中插入元素的示例代码:

#include <iostream>
#include <deque>
using namespace std;
int main() {
   deque<int> d;

   // 在deque的末尾插入元素
   d.push_back(10);//插入10
   d.push_back(20);//插入20
   d.push_back(30);//插入30

   return 0;
}

此时deque内部的元素为:

10 20 30

第二种方法.push_front()

C++的std::deque类提供了push_front()函数,用于在deque的前端插入一个元素。它的函数原型如下:

void push_front(const T& value);

其中,T是deque中存储的元素类型,value是要插入的元素的值。

使用push_front()函数,可以将一个元素插入到deque的开头,其他元素往后移动。示例代码如下:

#include <iostream>
#include <deque>
using namespace std;
int main() {
    deque<int> d;

    d.push_front(1);//在首位增加1
    d.push_front(2);//在首位增加2
    d.push_front(3);//在首位增加3
	//此时d的内容为[3,2,1]
    return 0;
}

在这个例子中,我们首先创建了一个空的deque,然后使用push_front()函数插入了三个元素,依次为3, 2, 1。我们可以看到元素的顺序是从大到小。

2、删除

pop_front()和pop_back()

C++ deque(双向队列)是一种支持在两端进行插入和删除操作的容器。pop_front函数用于删除deque的第一个元素,而pop_back函数用于删除deque的最后一个元素。

deque的pop_front函数的语法如下:

void pop_front();

deque的pop_back函数的语法如下:

void pop_back();

示例代码如下:

#include <iostream>
#include <deque>
using namespace std;
int main() {
    deque<int> mydeque;

    mydeque.push_back(1);
    mydeque.push_back(2);
    mydeque.push_back(3);
	mydeque.pop_front();//删除1
	mydeque.pop_back();//删除3

    return 0;
}

以上代码创建了一个包含元素1、2和3的deque。然后使用pop_front函数删除第一个元素,再使用pop_back函数删除最后一个元素。

3、遍历

deque的遍历有两种,一种是下标遍历,一种是迭代器遍历。迭代器遍历又分正向和反向。

下标遍历

C++的deque容器可以通过下标遍历,其操作方式和数组类似。下面是一个示例代码:

#include <iostream>
#include <deque>
using namespace std;
int main() {
    deque<int> d={1, 2, 3, 4, 5};
	int x=d.size();
    for (int i=0;i<x;i++) {
        cout<<d[i]<<" ";
    }

    return 0;
}

在上面的示例中,我们创建了一个包含5个整数的deque容器,然后使用for循环通过下标遍历打印出容器中的每个元素。

需要注意的是,使用下标遍历deque时需要保证下标在容器的有效范围内,否则可能会导致访问越界错误。

迭代器遍历

正向遍历

使用C++的deque容器可以通过迭代器进行正向遍历。以下是正向遍历deque的示例代码:

#include <iostream>
#include <deque>
using namespace std;
int main() {
    deque<int> d = {1, 2, 3, 4, 5};
	deque<int>::iterator it;
    // 使用迭代器进行正向遍历
    cout << "正向遍历deque:" <<endl;
	for(it=d.begin();it<=d.end();it++){
		cout<<*it<<" ";
	}
    return 0;
}

输出结果为:

正向遍历deque:
1 2 3 4 5

在上述代码中,我们使用deque<int>::iterator定义了一个迭代器it,并通过d.begin()d.end()分别获取deque的起始迭代器和结束迭代器。然后,我们使用迭代器it进行循环遍历deque中的元素,并使用*it获取当前遍历的元素值。

反向遍历

要使用迭代器反向遍历C++ deque,可以使用rbegin()和rend()函数来获取反向迭代器,然后使用递减操作符(--)进行遍历。以下是一个示例代码:

#include <iostream>
#include<deque>
using namespace std;
int main()
{
    deque<int> d = {1, 2, 3, 4, 5};

    // 使用迭代器反向遍历deque
    deque<int>::reverse_iterator it;
    for (it = d.rbegin(); it != d.rend(); it++) {
		cout << *it << " ";
    }
    return 0;
}

输出结果为:5 4 3 2 1

在这个示例中,我们创建了一个包含1到5的deque。然后,使用rbegin()函数获取反向迭代器的起始位置,使用rend()函数获取反向迭代器的结束位置。在for循环中,使用递减操作符(++)将迭代器向前移动,并使用*操作符获取迭代器指向的值。

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值