部分STL用法简述

  今天发现太久没写代码我有些STL用法都生疏了,顺便今天借此总结一下。(坑很大,留着以后慢慢填)

  1.priority queue

  我感觉这个还是很常用的,复杂度为O(log n)的一种维护最值,可以进行插入和弹出操作的一种数据结构。

  具体的用法如下:

  

1 #include<queue> // 开库
2 priority_queue<int(类型)>a(队列名称)
3 a.push(t)//把t插入a
4 a.pop()//把a的队首排出
5 a.top()//查询a的队首
6 a.empty()//bool 类型判断a是否为空

  另外很多题中是需要重定义运算符的具体写法如下

1 struct node
2 {
3     int p;
4     friend bool operator < (node x, node y)
5     {
6         return x.p < y.p;
7     }
8 }

  2.vector

   是一种可以动态改变大小的数组。

 1 #include<vector>//开库
 2 vector<int>a//开vector
 3 a.size()//vector大小
 4 a.empty()//判断是否为空
 5 a.push_back(t)//末尾加t
 6 a.pop_back()//末尾删除元素
 7 a.begin()//开始指针
 8 a.end()//末尾指针
 9 a.front()//第一个元素
10 a.back()//最后一个元素

  对于vector的遍历,可以采用如下方法

  

for(int i=0; i<a.size(); i++)

  3.set

  我一直没怎么写过set,所以在此也自学一遍。

  其实和其他的STL操作很相似

 1 #include<set>//开库
 2 set<int >a
 3 a.begin()//返回set容器的第一个元素
 4 a.end()//返回set容器的最后一个元素
 5 a.clear()//删除set容器中的所有的元素
 6 a.empty()//判断set容器是否为空
 7 a.max_size()//返回set容器可能包含的元素最大个数
 8 a.size()//返回当前set容器中的元素个数
 9 a.count(t)//判断t在a中出现几次
10 a.erase(t)//删除键值为t的数
11 a.insert(t)//将t插入a

  剩下的干脆以后再说好啦QAQ

原文地址:https://www.cnblogs.com/qmcp/p/9410415.html

时间: 2024-10-13 16:28:04

部分STL用法简述的相关文章

C++中_onexit()用法简述

引问:main 主函数执行完毕后,是否可能会再执行一段代码? 答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行. 知识了解: (1)使用格式:_onexit(int fun()) ,其中函数fun()必须是带有int类型返回值的无参数函数; (2)_onexit() 包含在头文件cstdlib中,cstdlib为c语言中的库函数: (3)无论函数_onexit() 放到main中任意位置,它都是最后执行. 程序举例分析: #include <iostream> #inc

python re 模块 findall 函数用法简述

python re 模块 findall 函数用法简述 代码示例: 1 >>> import re 2 >>> s = "adfad asdfasdf asdfas asdfawef asd adsfas " 3 4 >>> reObj1 = re.compile('((\w+)\s+\w+)') 5 >>> reObj1.findall(s) 6 [('adfad asdfasdf', 'adfad'), ('a

算法拾遗[4]&mdash;&mdash;STL用法

主要bb一下优先队列和字符串吧. 哦还有 bitset. 优先队列 定义很容易: priority_queue<int> pq; 内部是一个堆. 基本操作 pq.top() 取堆顶元素; (没有 front() 方法!) pq.push(x) 插入; pq.pop() 删除(删除堆顶); pq.empty() 判断是否为空. 自定义优先级 最大堆: priority_queue<int> pq; 最小堆: priority_queue< int, vector<int&

synchronized相关用法简述

synchronized 锁,他是一个java 的关键字,能够保证同一线程只有一个线程访问或使用此修饰的代码块 用法 synchronized方法,synchronized块 synchronized方法:public synchronized void accessVal(int newVal synchronized块: synchronized(syncObject) {   //允许访问控制的代码  } 总结:当一个syc锁被第一个拿到时,第一个拿到的享有优先使用权,其他使用这个syc锁

转:栈和队列小知识【STL用法】

原文出处:http://blog.csdn.net/chenzhenyu123456/article/details/44519943 栈: (一)头文件  #include<stack> (二)定义栈  stack<int>s; (三)使用 1 :  s.empty()                               栈为空返回true,否则返回false: 2 :  s.size()                                   返回栈中元素的

关于sql的case when用法简述

刚入手公司项目,需要添加一个功能,用到了SQL的case when以及concat SELECT eve.cc, eve.sc, case concat(cc,sc) WHEN '00' THEN '' WHEN '10' THEN '得意先' WHEN '01' THEN '仕入先' WHEN '11' THEN '得意先/仕入先' ELSE '' END as client_supplier_class FROM ( SELECT bd0.id, bd0.created, bd0.creat

Java底层魔术类Unsafe用法简述

1 引子 Java中没有指针,不能直接对内存地址的变量进行控制,但Java提供了一个特殊的类Unsafe工具类来间接实现.Unsafe主要提供一些用于执行低级别.不安全操作的方法,如直接访问系统内存资源.自主管理内存资源等,这些方法在提升Java运行效率.增强Java语言底层资源操作能力方面起到了很大的作用 .正如其名字unsafe,直接去使用这个工具类是不安全的,它能直接在硬件层(内存上)修改访问变量,而无视各种访问修饰符的限制.它几乎所有的公共方法API都是本地方法,这些方法是使用C/C++

C++中map的基本操作和用法

在阅读SSD代码中发现作者使用了C++中的map方法,因此搜索该关联式容器的使用方法,在这里一并总结. 一.Map 簡介 Map是STL的一個容器,它提供一對一的hash. 第一個可以稱為關鍵字(key),每個關鍵字只能在map中出現一次, 第二個可能稱為該關鍵字的值(value) Map以模板(泛型)方式實現,可以儲存任意類型的變數,包括使用者自定義的資料型態.Map主要用於資料一對一映射(one-to-one)的情況,map內部的實現自建一顆紅黑樹,這顆樹具有對數據自動排序的功能.比如一個班

STL具体操作之next_permutation和prev_permutation函数

 next函数默认的是从小到大的顺序,pre函数默认的是从大到小的顺序: {3,1,2}用next得到的结果是{3,1,2}和{3,2,1}: 用pre得到的结果是{3,1,2},{2,3,1},{2,1,3},{1,3,2,},{1,2,3}: 原理如下: [STL]next_permutation的原理和使用 1.碰到next_permutation(permutation:序列的意思) 今天在TC上碰到一道简单题(SRM531 - Division Two - Level One),是