STL数据结构

STL数据结构

1.priority_queue

#include<queue>

pritority<int>q;(大根堆)

priority_queue<int,vector<int>,greater<int> >q;(小根堆)

struct no{

    int x,v;

    bool operator <(const no &T)const{return v>T.v;}

// v值xiao的优先

};

queue<no>q;

 


2.vector

#include<vector>

vector<int>vec;

vec.push_back();(加入,从0开始)

vec.size() 

vec.pop_back()  (删除末尾)

vec.clear();

使用迭代器访问元素.

vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)cout<<*it<<endl;

插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

删除元素:    vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

排序 sort(vec.begin(),vec.end(),cmp)

元素翻转 reverse(vec.begin(),vec.end());


3.map

#include<map>

map<int,int>

直接用


4.bitset

#include<bitset>

bitset<100> s;

相当于flag[100]

也可以当做100位的二进制数

效率O(n/32)


5.set

include<set>

set<int>S//去重

multiset<int>S//不去重

 

S.begin()第一个

S.end()最后一个的下一位(没有东西)

S.clear()

S.empty() ,判断set容器是否为空

S.count(x);x出现次数

erase(iterator)  ,删除定位器iterator指向的值

erase(key_value),删除键值key_value的值

S.size()

lower_bound(key_value) ,返回第一个大于等于key_value的定位器

upper_bound(key_value),返回第一个大于key_value的定位器

插入 S.inset(x);

迭代器 set<int>::iterator pos;

遍历 for(pos=S.begin();pos!=S.end();pos++)

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<set> 
using namespace std;
int main(){set<int>S;S.clear(); S.insert(1);S.insert(2);S.insert(3);set<int>::iterator it;it=S.begin();cout<<*it<<' '<<*S.begin()<<endl; //查找 set<int>::iterator t1,t2;t1=S.lower_bound(1);t2=S.upper_bound(1);cout<<*t1<<' '<<*t2<<endl;set<int>::iterator t3;t3=S.upper_bound(2);cout<<"? "<<*t3<<endl; //找不到就指向end //遍历 for(it=S.begin();it!=S.end();++it){cout<<*it<<endl;}//统计/ 判断是否出现 cout<<S.count(1)<<endl; //删除it=S.end();S.erase(it); cout<<*S.end()<<endl;return 0;
}

6.next_permutation(a+1,a+n+1)

7.nth_element(first,kth,last,cmp)

 nth_element(now+1,now+m+1,now+n+1,greater<ll>());

注意前m个是无序的,但保证是前m大

转载于:https://www.cnblogs.com/liankewei/p/10358868.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《netty实战》阅读笔记(2)——Netty 的数据容器ByteBuf

ByteBuffer 当我们进行数据传输的时候&#xff0c;往往需要使用到缓冲区&#xff0c;常用的缓冲区就是JDK NIO类库提供的java.nio.Buffer。 实际上&#xff0c;7种基础类型&#xff08;Boolean除外&#xff09;都有自己的缓冲区实现&#xff0c;对于NIO编程而言&#xff0c;我们…

JAVA HASHMAP 用法

import java.util.HashMap;public class Student { String name; String sex; public Student(String n,String s) { namen; sexs; } public String toString(){ return ("姓名:"name"\n""性别:"sex"\n…

有了二叉查找树、平衡树为啥还需要红黑树?

参考文章&#xff1a; 有了二叉查找树、平衡树为啥还需要红黑树&#xff1f; 漫画AVL树 谢谢作者分享&#xff01;

32位Windows7上8G内存使用感受+xp 32位下使用8G内存

我推荐做开发的朋友:赶快加入8G的行列吧....呵呵..超爽...速度超快...基本没有等待的概念...深有体会... 为什么要使用8G内存&#xff1f;在国内外各大论坛上&#xff0c;这都是一个有争议的问题。问题的反方论据非常充分&#xff1a; 除了少数专业领域&#xff0c;大多数应用程…

《重构-改善既有代码的设计》-第1例:租赁影片(2)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 上接 重构-改善既有代码的设计-第1例&#xff1a;租赁影片&#xff08;1&#xff09; 2 运用多态取代与价格相关的条件逻辑 2.1 最好不…

elasticsearch 的查询 /_nodes/stats 各字段意思

/_nodes/stats 字段意思 “” 1 { 2 "_nodes": {3 "total": 1,4 "successful": 1,5 "failed": 06 },7 "cluster_name": "ELKTEST",8 "nodes": {9 "lnlHC8yERCKXCuAc…

看完Java的动态代理技术——Pythoner笑了

Java的动态代理常用来包装原始方法调用&#xff0c;用于增强或改写现有方法的逻辑&#xff0c;它在Java技术领域被广为使用&#xff0c;在阿里的Sofa RPC框架序列化中你能看到它的身影&#xff0c;Hibernate的实体类功能增强也是以动态代理的方式解决的&#xff0c;还有Spring吹…

shell实现从1加到100

#!/bin/bash # test"while do done"PATH/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATHsum0 for i in $(seq 1 100); do let sumi done echo "The sum is > $sum "

面试常考的数据结构Java实现

1、线性表 2、线性链表 3、栈 4、队列 5、串 6、数组 7、广义表 8、树和二叉树 二叉树&#xff1a;每个结点至多只有两棵子树&#xff08;即二叉树中不存在度大于2的结点&#xff09;&#xff0c;并且&#xff0c;二叉树的子树有左右之分&#xff0c;其次序不能任意颠倒。 二叉…

Java5线程并发库之LOCK(锁)CONDITION(条件)实现线程同步通信

为什么80%的码农都做不了架构师&#xff1f;>>> Lock&#xff08;锁&#xff09;&Condition&#xff08;条件&#xff09;实现线程同步通信 接下来介绍&#xff0c;java5线程并发库里面的锁。跟锁有关的类和接口主要是位于java.util.concurrent.locks包。 Lock…

互联网,可预见的未来

我记忆中的1998年代&#xff0c;PC迅猛发展&#xff0c;CPU速度逐年翻番&#xff0c;持续了7年&#xff0c;但下一个7年到现在&#xff0c;基本上没有太大提升&#xff1b;显示器从14英寸CRT发展到2005的21英寸LED&#xff0c;后来也没有继续进化。为什么&#xff1f;当人对计算…

什么时候用GET?什么时候用POST?

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、 GET和POST两种方法都是将数据送到服务器&#xff0c;但你该用哪一种呢&#xff1f; HTTP标准包含这两种方法是为了达到不同的目的…

逻辑运算符与逻辑表达式

1 #include <stdio.h>2 3 int main()4 {5 int a0;int b0;6 if(a&&b)//a&&ba的逻辑值为0&#xff0c;则执行else7 {8 printf("a&&b is true\n");9 } 10 else 11 { 12 printf("a&&…

linux/shell相关知识点

阿里Linux Shell脚本面试25个经典问答 Linux运维工程师12道面试题整理 感谢作者分享&#xff01;

20180601]函数与标量子查询2.txt

[20180601]函数与标量子查询2.txt --//昨天看http://www.cnblogs.com/kerrycode/p/9099507.html链接,里面提到: 通俗来将&#xff0c;当使用标量子查询的时候&#xff0c;ORACLE会将子查询结果缓存在哈希表中&#xff0c; 如果后续的记录出现同样的值&#xff0c;优化器通过缓存…

ODP 使用 ArrayBind 时可能会遇到的巨坑 'System.IConvertible' 的解决方法

Unable to cast object of type System.Nullable1[System.Int16][] to type System.IConvertible 一段代码99%不会出错&#xff0c;0.1%会报上边的错&#xff0c;debug费了老鼻子时间&#xff0c;发现此坑很深。异常是 cmd.ExecuteNonQuery() 抛的&#xff0c;实际是 para.Valu…

eclipse快速定位到错误处

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程 以前都是按着滚动条往下拉&#xff0c;找到错误的地方&#xff0c;有时比较多的时候就很麻烦。 其实eclipse是可以直接快速定位的&#x…

C语言中的“”和“”

先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i 1; i i << 2; //把i里的值左移2位 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000...0100,也就是10进制的4,所以…

网站性能优化的三重境界

这篇文章是关于网站性能优化体验的&#xff0c;性能优化是一个复杂的话题&#xff0c;牵涉的东西非常多&#xff0c;我只是按照我的理解列出了性能优化整个过程中需要考虑的种种因素。点到为止&#xff0c;包含的内容以浅显的介绍为主&#xff0c;如果你有见解能告知我那再好不…

Linux使用RSA实现免密登录(原理)

参考文献Linux密钥rsa加密原理和ssh使用密钥实现免密码登录 感谢作者分享&#xff01;