算法基础STL

本文介绍了数据结构中队列、堆、栈的基本操作,强调了它们在空间和时间复杂度上的特性。例如,队列的清空可以通过重新构造实现,堆可以按需构建为小根堆。此外,还提到了双端队列deque、集合set和映射map的性能特点,如set的插入操作忽略重复元素,map的时间复杂度为O(logn)。对于空间需求大的情况,平均操作时间复杂度可以达到O(1)。
摘要由CSDN通过智能技术生成

STL

image-20220309224000392

image-20220309224038645

image-20220309224115954

image-20220309224144395

image-20220309174329539

如果需要10^6的空间,那么大概copy 10^6次,平均下来,时间复杂度是O(1),申请空间的次数是logn

队列、堆、栈没有clear函数,想清空队列,可以重新构造一个

queue<int> q;
q = queue<int>();

堆默认是大根堆,有两种方式可以构造小根堆

  1. 插入一个数的时候插入它的负数

    priority_queue<int> heap;
    heap.push(-x);
    
  2. 定义的时候直接定义小根堆

    priority_queue<int, vector<int>, greater<int>> heap;
    

双端队列deque是加强版的vector,不过速度比较慢,所以用的不是很多,因为比一般数组慢好几倍

set是不能有重复元素的,插入一个重复元素,那么这个操作会被忽略掉,multiset可以,set所有操作时间复杂度都是logn,不过size()、empty()、clear()是O(1)的

map可以像数组一样用,但是时间复杂度是O(logn),数组直接取下标是O(1)的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值