• C++ STL 常用数据结构


    1.priority_queue(优先队列):

    • 概述:C++ STL中的优先队列是优先队列的一种经典实现,插入元素的时间复杂度大约为O(nlogn)
    • 首先,需要包括queue头文件,也就是这样:
    #include<queue>
    • 之后,我们先声明打算放入优先队列的变量或结构体,比如:
    struct Node{
        int value;
        bool operator <(const Node& anotherNode)const{//运算符重载
            return value<anotherNode.value;
        }
    };
    int a=1;
    • C++ STL中的priority_queue可以对各种类型的数据进行排序(基本数据类型或具有运算符重载的结构体).如果是对结构体进行排序,我们就可以通过修改在运算符重载中return的值来修改数据在priority_queue中的排列顺序(降序或升序等)(具体来说(在普通的简单情况下),如果在运算符重载处使用正常的<,在priority_queue中的数据就会按降序排列(也就是从大到小),反之,如果故意返回相反的值,在priority_queue中的数据自然就会按升序排列).
    • 对于基本数据类型的priority_queue测试代码:
    #include<cstdio>
    #include<iostream>
    #include<queue>
    using namespace std;
    int main(){
    	priority_queue<int> q;//主要区别
    	q.push(5);
    	q.push(3);
    	for(int i=1;i<=2;i++){
    		int nowValue=q.top();q.pop();
    		cout<<nowValue<<" ";
    	}
    	cout<<endl;
    	return 0;
    }
    • 对于结构体的priority_queue测试代码:
    #include<cstdio>
    #include<iostream>
    #include<queue>
    using namespace std;
    struct Node{
    	int value;
    	bool operator <(const Node& rds)const{
    		return value<rds.value;
    	}
    };
    int main(){
    	priority_queue<Node> q;////主要区别
    	q.push(Node{5});
    	q.push(Node{3});
    	for(int i=1;i<=2;i++){
    		int nowValue=q.top().value;q.pop();
    		cout<<nowValue<<" ";
    	}
    	cout<<endl;
    	return 0;
    }
    • 从上面的代码可以看出,使用结构体或基本数据类型作为优先队列中的数据在我们使用时的区别,主要是在声明priority_queue时的"< >"中.
  • 相关阅读:
    修改编译8266NodeMCU固件 打开各种模块以及修改支持智能配网
    3实现8266智能配网并打印出ip地址 8266 lua nodemcu 智能配网 一键配网
    8266 开发环境教程 nodemcu lua开发8266教程 输出世界你好
    代码提交量查询
    antd DatePicker框日期限制
    form表单设置值
    a标签传参数
    css获取页面高度,定位部分信息
    Form自定义校验
    下拉框可输入或输入为下拉框对应的值
  • 原文地址:https://www.cnblogs.com/zbsy-wwx/p/11680694.html
Copyright © 2020-2023  润新知