C++中的带有实例的deque of Pairs
什么是deque?
在C++中,deque是一个序列容器,也被称为双端队列。顾名思义,deque允许从两端进行插入和删除。尽管deque类似于vector,但与vector比较起来,deque更高效。在向量中,连续的存储分配是保证的,但是这在deque中可能不是这种情况。Deque是队列的特殊情况,因为允许在两端进行插入和删除操作。
与deque相关的函数:
- push_front() : 用于从前面将元素推入容器中。
- push_back() : 用于从后面将元素推入容器中。
- front() : 用于引用容器的第一个元素。
- back() : 用于引用容器的最后一个元素。
什么是pair?
C++中的utility头文件为我们提供了pair容器。一对由两个数据元素或对象组成。
- 第一个元素被引用为’first’,第二个元素被引用为’second’,顺序固定(first,second)。
- Pair用于组合两个可能在类型上不同的值。Pair提供了一种将两个异构对象存储为单个单元的方法。
- Pair可以被分配、复制和比较。在映射或哈希映射中分配对象数组默认为类型’pair’,其中所有’first’元素都是唯一的键,关联着它们的’second’值对象。
要访问元素,我们使用变量名称,然后是点运算符,然后是关键字first或second。
如何访问一个pair?
可以使用点(.)操作符访问一对的元素。
语法:
auto fistElement = myPair.first;
auto fistElement = myPair.second;
本文重点介绍如何创建一对deque。
deque of pairs
Deque of pairs是一个deque容器,其中每个元素本身都是一对。
语法:
**deque <pair<dataType1,dataType2>> myContainer; **
这里,dataType1和dataType2可以是相似或不同的数据类型
示例1: 下面是实现一对deque的C++程序。
// C++程序演示了
//带有pair的deque的工作原理
#include <bits/stdc++.h>
using namespace std;
//打印deque元素的函数
void print(deque<pair<int,
bool> >& myContainer)
{
for (auto currentpair : myContainer)
{
//每个deque元素本身都是一对
pair<int, bool> pr = currentpair;
cout << "[ ";
//打印pair元素
cout << pr.first << ' ' <<
pr.second;
cout << ']';
cout << '\n';
}
}
//驱动程序
int main()
{
//声明类型为{int,bool}的pair的deque
deque<pair<int, bool> >
myContainer;
//声明一对
pair<int, bool> pair1;
//初始化
pair1 = make_pair(22, false);
//将对推到deque前面
myContainer.push_front(pair1);
//声明另一对
pair<int, bool> pair2;
//初始化
pair2 = make_pair(33, true);
//将对推到deque后面
myContainer.push_back(pair2);
//声明另一对
pair<int, bool> pair3;
//初始化对
pair3 = make_pair(11, false);
//将对推到deque前面
myContainer.push_front(pair3);
//声明另一对
pair<int, bool> pair4;
//初始化对
pair4 = make_pair(44, true);
//将对推到deque后面
myContainer.push_back(pair4);
//调用print函数
print(myContainer);
return 0;
}
输出
[ 11 0]
[ 22 0]
[ 33 1]
[ 44 1]
例2: 以下是实现deque of pairs的C++程序。
// C++程序演示deque和pair的工作
#include <bits/stdc++.h>
using namespace std;
//打印双端队列元素的函数
void print(deque<pair<string,bool> >& myContainer)
{
for(auto currentpair:myContainer)
{
//每个双端队列元素都是一个pair
pair<string,bool> pr=currentpair;
cout<<"[ ";
//打印pair元素
cout<<pr.first<<'<<pr.second;
cout<<']';
cout<<'\n';
}
}
//主函数
int main()
{
//声明一个元素类型为{string,bool}的pair双端队列
deque<pair<string,bool> > myContainer;
//声明一个pair
pair<string,bool> pair1;
//初始化pair
pair1=make_pair("GeeksforGeeks",false);
//将该pair插入双端队列首部
myContainer.push_front(pair1);
//声明另一个pair
pair<string,bool> pair2;
//初始化pair
pair2=make_pair("GFG",true);
//将该pair插入双端队列尾部
myContainer.push_back(pair2);
//声明另一个pair
pair<string,bool> pair3;
//初始化pair
pair3=make_pair("Java",false);
//将该pair插入双端队列首部
myContainer.push_front(pair3);
//声明另一个pair
pair<string,bool> pair4;
//初始化pair
pair4=make_pair("Python",true);
//将该pair插入双端队列尾部
myContainer.push_back(pair4);
//调用print函数
print(myContainer);
return 0;
}
输出结果
[ Java 0]
[ GeeksforGeeks 0]
[ GFG 1]
[ Python 1]