deque::pop_front() 和 deque::pop_back() 在 C++ STL 中的应用

deque::pop_front() 和 deque::pop_back() 在 C++ STL 中的应用

双端队列或双向队列是一种序列容器,具有两端的扩展和收缩功能。它们类似于向量,但在插入和删除元素的末尾以及开头时更有效。与向量不同,不一定保证连续存储分配。

deque::pop_front()

pop_front() 函数用于从队列的前端弹出或删除元素。该值从队列的开头移除,容器大小减少 1。

语法:

dequename.pop_front()
参数:
不需要传递值作为参数。
结果:
从名为 dequename 的给定队列的前面删除值

示例:

输入: mydeque = 1, 2, 3
           mydeque.pop_front();
输出: 2, 3

输入: mydeque = 3, 4, 1, 7, 3
           mydeque.pop_front();
输出: 4, 1, 7, 3

错误和异常

  1. 无异常保证 – 如果抛出异常,则容器不会发生更改。
  2. 如果队列为空,则显示未定义行为。
// CPP程序示例
// pop_front()函数
#include <iostream>
#include <deque>
using namespace std;
  
int main()
{
    deque<int> mydeque;
    mydeque.push_front(3);
    mydeque.push_front(2);
    mydeque.push_front(1);
    // 双向队列变成 1, 2, 3
 
    mydeque.pop_front();
    // 双向队列变成 2, 3
  
    for (auto it = mydeque.begin(); it != mydeque.end(); ++it)
        cout << ' ' << *it;
}  

输出:

2 3

应用: 通过 push_front() 函数输入一个空队列,并使用以下数字和顺序,并打印该队列的反向顺序。

输入: 1, 2, 3, 4, 5, 6, 7, 8
输出: 8, 7, 6, 5, 4, 3, 2, 1
// CPP程序示例
// pop_front()函数的应用
#include <iostream>
#include <deque>
using namespace std;
  
int main()
{
    deque<int> mydeque{}, newdeque{};
    mydeque.push_front(8);
    mydeque.push_front(7);
    mydeque.push_front(6);
    mydeque.push_front(5);
    mydeque.push_front(4);
    mydeque.push_front(3);
    mydeque.push_front(2);
    mydeque.push_front(1);
  
    // 双向队列变成 1, 2, 3, 4, 5, 6, 7, 8
  
    while (!mydeque.empty()) {
        newdeque.push_front(mydeque.front());
        mydeque.pop_front();
    }
    for (auto it = newdeque.begin(); it != newdeque.end(); ++it)
        cout << ' ' <<*it;
}  

输出:

8 7 6 5 4 3 2 1

时间复杂度: O(1)

辅助空间 : O(1)

deque::pop_back()

pop_back() 函数用于从队列的后端弹出或删除元素。该值从队列的末尾移除,容器大小减少 1。
语法:

dequename.pop_back()
参数:
不需要传递值作为参数。
结果:
从名为 dequename 的给定队列的末尾或后面删除值

示例:

输入:  mydeque = 1, 2, 3
           mydeque.pop_back();
输出: 1, 2

输入: mydeque = 3, 4, 1, 7, 3
           mydeque.pop_back();
输出: 3, 4, 1, 7

错误和异常

  1. 如果抛出异常,容器不会发生任何变化。
  2. 如果deque为空,则会显示未定义的行为。
//CPP程序示例
//pop_back()函数
# include <iostream>
# include <deque>
using namespace std;

int main()
{
    deque<int> mydeque;
    mydeque.push_front(5);
    mydeque.push_front(4);
    mydeque.push_front(3);
    mydeque.push_front(2);
    mydeque.push_front(1);
    //队列变为1、2、3、4、5

    mydeque.pop_back();
    //队列变为1、2、3、4

    for (auto it = mydeque.begin(); it != mydeque.end(); ++it)
        cout << ' ' << *it;
}  

输出:

1 2 3 4

应用:

使用push_front()函数输入以下数字和顺序的空deque,并打印deque的反向输出。

输入:1、20、39、43、57、64、73、82
输出:82、73、64、57、43、39、20、1
//CPP程序示例
//pop_back()函数的应用
# include <iostream>
# include <deque>
using namespace std;

int main()
{
    deque<int> mydeque, newdeque;
    mydeque.push_front(82);
    mydeque.push_front(73);
    mydeque.push_front(64);
    mydeque.push_front(57);
    mydeque.push_front(43);
    mydeque.push_front(39);
    mydeque.push_front(20);
    mydeque.push_front(1);

    //队列变为1、20、39、43、57、64、73、82

    while (!mydeque.empty()) {
        newdeque.push_back(mydeque.back());
        mydeque.pop_back();
    }
    for (auto it = newdeque.begin(); it != newdeque.end(); ++it)
        cout << ' ' << *it;
}  

输出:

82 73 64 57 43 39 20 1

时间复杂度: O(1)

辅助空间: O(1)

让我们以表格形式看一下它们之间的区别:

ID deque::pop_front() deque::pop_back()
1. 用于删除deque容器中的第一个元素。 用于删除deque容器中的最后一个元素。
2. 其语法为-:pop_front(); 其语法为-:pop_back();
3. 它不带任何参数。 它不带任何参数。
4. 没有任何返回值。 没有任何返回值。
5. 其复杂度是常数。 其复杂度是常数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程