ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STL在竞赛中的应用

2021-08-01 15:00:49  阅读:201  来源: 互联网

标签:竞赛 const temp point STL queue pq 应用 operator


STL在竞赛中的应用

概论

vector

vector 是不定长数组容器。其数组长度的扩增策略是每次乘 2

其操作方式如下:


list

链表容器

string

queue & deque

stack

priority_queue

优先队列,通过堆来实现,能够保证队首元素为最大(小)值,支持插入,删除操作(\(O(log(n))\)) ,也支持取队首元素、弹出队首元素(\(O(1)\))

使用方法如下:

#include<queue>
#include<iostream>
using namespace std;

struct point{
    int x,y,z;
    const bool operator <(const point &temp)const{
        if(x!=temp.x)   return x<temp.x;
        if(y!=temp.y)   return y<temp.y;
        if(z!=temp.z)   return z<temp.z;
        return false;
    }
    const bool operator >(const point &temp)const{
        return temp<*this;
    }
    void output(){
        cout<<x<<" "<<y<<" "<<z<<endl;
    }
};
int main(){
    /*声明*/
    priority_queue<point> pq_0;

    /*大根堆构造*/
    priority_queue<point,vector<point>,greater<point>>  pq_1;//小根堆,重载>方法
    priority_queue<point,vector<point>,less<point>>  pq_2;//大根堆,重载<方法

    /*访问*/
    if(!pq_0.empty()){
        point  temp=pq_0.top();
        temp.output();
    }
    /*清空*/
    while(pq_0.empty()) pq_0.empty();
}

各种比较运算符重载方法(通过\(<\)延伸):

    bool operator <(const point &temp)const{
        if(x!=temp.x)   return x<temp.x;
        if(y!=temp.y)   return y<temp.y;
        if(z!=temp.z)   return z<temp.z;
        return false;
    }
    bool operator >(const point &temp)const{
        return temp<*this;
    }
    bool operator <=(const point &temp)const{
        return !(temp>*this);
    }
    bool operator >=(const  point &temp)const{
        return !(*this<temp);
    }
    bool operator ==(const point &temp)const{
        return (*this<=temp) && (*this>=temp);
    }

Lambda

algorithm

map

set

multimap/multiset

unodered_map/set

标签:竞赛,const,temp,point,STL,queue,pq,应用,operator
来源: https://www.cnblogs.com/sora-13/p/15086684.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有