优先队列priority_queue用法和tuple用法详解

1.优先队列(priority_queue)

我们优先队列其本质其实是一个堆,一般是一个二叉堆

种类

<E:表示数据类型>
(1)大根堆:

priority_queue<E> que;//大根堆,堆顶是最大的元素,输出从大到小

(2)小根堆:

priority_queue<E,vector<E>,greater<E>> que//小根堆,堆顶为最小元素

 常见操作

优先队列的基本操作包括插入元素、删除最高优先级元素、判断队列是否为空等。

push(element):将元素插入到优先队列中。
pop():移除优先队列中的最高优先级元素。
top():返回优先队列中的最高优先级元素。
empty():判断优先队列是否为空,如果为空返回true,否则返回false。
size():返回优先队列中元素的个数。

 2.tuple数据结构

(1)定义:

tuple:用于将多个值组合在一起,形成一个有序的元组。每个值在tuple中都有一个对应的索引,可以通过索引来访问和操作其中的值。

(完全可以类比结构体,只不过是比结构体在特定情况下更加好用,比如和优先队列的结合)

C++中的tuple是一个标准库类模板,用于存储固定数量的异类对象。允许将多个对象捆绑成一个单一的对象,并且可以轻松地从中提取值或者通过结构化绑定将其解构到不同的变量中。tuple提供了一个通用的数据结构,可以保存不同类型的元素,并通过下标或get函数来访问其中的值。

C++11引入了最初的tuple实现, C++17进一步扩展了其功能,增加了结构化绑定的支持,大大提高了tuple在实际应用中的便利性。

(2)常用函数

make_tuple:用于创建tuple数据类型

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  

signed main() 
{   
    tuple<int,int,int> tu=make_tuple(1,1,1);
    return 0;  
}

tie:绑定函数

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  

signed main() 
{   
    int a,b,c;
    tuple<int,int,int> tu=make_tuple(1,2,3);
    tie(a,b,c)=tu;
    cout<<a<<" "<<b<<" "<<c;
    return 0;  
}

 

get:用于获取到tuple里面的特定元素

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  

signed main() 
{   
    int a,b,c;
    tuple<int,int,int> tu=make_tuple(1,2,3);
    tie(a,b,c)=tu;
    cout<<a<<" "<<b<<" "<<c<<"\n";
    cout<<get<0>(tu)<<" "<<get<1>(tu)<<" "<<get<2>(tu);
    return 0;  
}

(3)一些不常用的函数,但是可能会遇到

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值