c++ 容器 vector list deque priority_queue

参考链接:https://www.cnblogs.com/roucheng/p/cpprongqi.html

随机存取就是直接存取,可以通过下标直接访问的那种数据结构,与存储位置无关,例如数组。
非随机存取就是顺序存取了,不能通过下标访问了,只能按照存储顺序存取,与存储位置有关,例如链表。

总结

vector 是一段连续的内存块,而deque 是多个连续的内存块, list 是所有数据元素分开保存,可以是任何两个元素没有连续。

vector 的查询性能最好,并且在末端增加数据也很好,除非它重新申请内存段;适合高效地随机存储。

list 是一个链表,任何一个元素都可以是不连续的,但它都有两个指向上一元素和下一元素的指针。所以它对插入、删除元素性能是最好的,而查询性能非常差;适合 大量地插入和删除操作而不关心随机存取的需求。

deque 是介于两者之间,它兼顾了数组和链表的优点,它是分块的链表和多个数组的联合。所以它有被list 好的查询性能,有被vector 好的插入、删除性能。 如果你需要随即存取又关心两端数据的插入和删除,那么deque 是最佳之选。

接口的使用

1.list1.insert(list1.begin()+1,3,9):   // list1: 7,5,2,4
The contents of list1 : 7 9 9 9 5 2 4

2.priority_queue<int,vector<int>, cmp> 

cmp默认为less<int>, 是< ,  大顶堆,从大到小输出

cmp 为greater<int>, 是> ,小顶堆,从小到大输出

cmp 自定义 重载>,  从小到大输出

struct Node{
    int x;
    int y;
};
struct cmp{
  bool operator()(Node a, Node b){  //注意这里有括号operator()
     if(a.x == b.x) return a.y > b.y;
     else return a.x > b.x;
  }
};
int main(){
    priority_queue<Node,vector<Node>, cmp> q;
    return 0;
}

tip:

该形式与sort中的cmp不同,重载>,那么利用sort(v.begin(), v.end(), cmp),输出就是从大到小的排序。

bool comp(const int &a,const int &b)
{
    return a>b;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值