📜  C++ 中的双端队列与示例

📅  最后修改于: 2022-05-13 01:55:00.835000             🧑  作者: Mango

C++ 中的双端队列与示例

什么是双端队列?

在 C++ 中,双端队列是一个序列容器,也称为双端队列。顾名思义,双端队列允许从两端插入和删除。虽然双端队列类似于向量,但双端队列比向量更有效。在向量中,可以保证连续的存储分配,但对于双端队列可能并非如此。 Deque 是队列的特例,因为两端都允许插入和删除操作。

与双端队列相关的函数:

  • push_front() 用于从前面推送容器中的元素。
  • push_back() 用于从后面推送容器中的元素。
  • front() 用于引用容器的第一个元素。
  • back() 用于引用容器的最后一个元素。

什么是对?

C++ 中的实用程序标头为我们提供了配对容器。一对由两个数据元素或对象组成。

  • 第一个元素被称为“第一”,第二个元素被称为“第二”,并且顺序是固定的(第一,第二)。
  • Pair 用于将类型可能不同的两个值组合在一起。 Pair 提供了一种将两个异构对象存储为一个单元的方法。
  • 可以分配、复制和比较对。在 map 或 hash_map 中分配的对象数组默认为“pair”类型,其中所有“first”元素都是与其“second”值对象关联的唯一键。

要访问元素,我们使用变量名后跟点运算符,然后是关键字 first 或 second。

如何访问一对?

可以使用点 (.)运算符访问对的元素。

句法:

本文重点介绍创建对的双端队列。

双端队列

对的双端队列是一个双端队列容器,其中每个元素本身就是一对。

句法:

示例 1:下面是实现对的双端队列的 C++ 程序。

C++
// C++ program to demonstrate
// the working of deque
// of pairs
#include 
using namespace std;
  
// Function to print deque elements
void print(deque >& myContainer)
{
    for (auto currentpair : myContainer) 
    {
        // Each element of the deque is
        // a pair itself
        pair pr = currentpair;
  
        cout << "[ ";
  
        // Printing pair elements
        cout << pr.first << ' ' << 
                pr.second;
        cout << ']';
        cout << '\n';
    }
}
  
// Driver code
int main()
{
    // Declaring a deque of pairs
    // of type {int, bool}
    deque >
          myContainer;
  
    // Declaring a pair
    pair pair1;
  
    // Initializing the
    // pair
    pair1 = make_pair(22, false);
  
    // Push the pair at the front
    // in the deque
    myContainer.push_front(pair1);
  
    // Declaring another pair
    pair pair2;
  
    // Initializing the
    // pair
    pair2 = make_pair(33, true);
  
    // Push the pair at the back
    // in the deque
    myContainer.push_back(pair2);
  
    // Declaring another pair
    pair pair3;
  
    // Initializing the pair
    pair3 = make_pair(11, false);
  
    // Push the pair at the front
    // in the deque
    myContainer.push_front(pair3);
  
    // Declaring another pair
    pair pair4;
  
    // Initializing the pair
    pair4 = make_pair(44, true);
  
    // Push the pair at the back
    // in the deque
    myContainer.push_back(pair4);
  
    // Calling print function
    print(myContainer);
    return 0;
}


C++
// C++ program to demonstrate
// the working of deque
// of pairs
#include 
using namespace std;
  
// Function to print deque elements
void print(deque >& myContainer)
{
    for (auto currentpair : myContainer) 
    {
        // Each element of the deque is
        // a pair itself
        pair pr = currentpair;
  
        cout << "[ ";
  
        // Printing pair elements
        cout << pr.first << ' ' << 
                pr.second;
        cout << ']';
        cout << '\n';
    }
}
  
// Driver code
int main()
{
    // Declaring a deque of pairs
    // of type {string, bool}
    deque >
          myContainer;
  
    // Declaring a pair
    pair pair1;
  
    // Initializing the
    // pair
    pair1 = make_pair("GeeksforGeeks", 
                       false);
  
    // Push the pair at the front
    // in the deque
    myContainer.push_front(pair1);
  
    // Declaring another pair
    pair pair2;
  
    // Initializing the
    // pair
    pair2 = make_pair("GFG", true);
  
    // Push the pair at the back
    // in the deque
    myContainer.push_back(pair2);
  
    // Declaring another pair
    pair pair3;
  
    // Initializing the pair
    pair3 = make_pair("Java", 
                       false);
  
    // Push the pair at the front
    // in the deque
    myContainer.push_front(pair3);
  
    // Declaring another pair
    pair pair4;
  
    // Initializing the pair
    pair4 = make_pair("Python", 
                       true);
  
    // Push the pair at the back
    // in the deque
    myContainer.push_back(pair4);
  
    // Calling print function
    print(myContainer);
    return 0;
}


输出

示例 2:下面是实现对的双端队列的 C++ 程序。

C++

// C++ program to demonstrate
// the working of deque
// of pairs
#include 
using namespace std;
  
// Function to print deque elements
void print(deque >& myContainer)
{
    for (auto currentpair : myContainer) 
    {
        // Each element of the deque is
        // a pair itself
        pair pr = currentpair;
  
        cout << "[ ";
  
        // Printing pair elements
        cout << pr.first << ' ' << 
                pr.second;
        cout << ']';
        cout << '\n';
    }
}
  
// Driver code
int main()
{
    // Declaring a deque of pairs
    // of type {string, bool}
    deque >
          myContainer;
  
    // Declaring a pair
    pair pair1;
  
    // Initializing the
    // pair
    pair1 = make_pair("GeeksforGeeks", 
                       false);
  
    // Push the pair at the front
    // in the deque
    myContainer.push_front(pair1);
  
    // Declaring another pair
    pair pair2;
  
    // Initializing the
    // pair
    pair2 = make_pair("GFG", true);
  
    // Push the pair at the back
    // in the deque
    myContainer.push_back(pair2);
  
    // Declaring another pair
    pair pair3;
  
    // Initializing the pair
    pair3 = make_pair("Java", 
                       false);
  
    // Push the pair at the front
    // in the deque
    myContainer.push_front(pair3);
  
    // Declaring another pair
    pair pair4;
  
    // Initializing the pair
    pair4 = make_pair("Python", 
                       true);
  
    // Push the pair at the back
    // in the deque
    myContainer.push_back(pair4);
  
    // Calling print function
    print(myContainer);
    return 0;
}
输出