简单STL笔记
想了好久,还是把自己了解的先整理一下吧,毕竟老是忘,这里主要简单介绍三种容器 set,queue,vector,以及栈 stack,队列queue 的简单用法。
一、set
在set中,效率比vector queue list高(注意,STL耗时)
set<int>s; 常用操作有:----------------set会自动从小到大排序,并且自动去除重复元
1.元素插入 s.insert();
2.顺序遍历(必须借助迭代器) set<int>::iterator it;
3.反序遍历 set<int>::reverse_iterator rit;
4.查找函数 s.find() 注意可以输出 cout<<*s.find()<<endl;而不能 cout<<s.find()<<endl;被查找数存在返回存在的位置,若不存在,则超出末端迭代器;
s.count()若存在返回1,不存在返回0,ps:1、0可以输出(详情见代码)。
5.元素删除 s.erase()(ps:删除后,会自动调整);
6.容器清空 s.clear();
7.集合大小 s.size();
8.multiset<unsigned int>s//多重集合,允许值重复
9.count(s.begin(),s.end(),value)统计value出现的次数
algorithm头文件定义了一个count的函数,其功能类似于find。这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果。
编写程序读取一系列int型数据,并将它们存储到vector对象中,然后统计某个指定的值出现了多少次。
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int>s;
set<int>::iterator it;
set<int>::reverse_iterator next;
for(int i=;i<=;i++)
{
s.insert(i);//元素插入
}
cout<<"顺序遍历:";
for(it=s.begin();it!=s.end();it++)//顺序遍历
{
cout<<*it<<' ';
}
cout<<endl;
cout<<"集合大小:";
cout<<s.size()<<endl;
cout<<"反向遍历:";
for(next=s.rbegin();next!=s.rend();next++)//反序遍历
{
cout<<*next<<' ';
}
cout<<endl;
cout<<"查找7的结果:"<<endl;
cout<<*s.find()<<endl;//查找函数
cout<<s.count()<<endl;
cout<<"查找11的结果:"<<endl;
cout<<*s.find()<<endl;
cout<<s.count()<<endl;
s.erase();//元素删除
cout<<"删除元素2之后的顺序遍历:";
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<' ';
}
cout<<endl;
cout<<"删除元素2之后的集合大小:";
cout<<s.size()<<endl;//集合大小
s.clear();//容器清空
cout<<"清空集合之后的集合大小:";
cout<<s.size()<<endl;//集合大小
return ;
}

二、vector
反转函数reverse
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
string s,t;
cin>>s;
t=s;
reverse(t.begin(),t.end());
puts(t==s?"Yes":"No");
return ;
}
二、prioroty_queue
优先队列的简单排序
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
struct Node
{
int val;
friend bool operator<(const Node &a,const Node &b)
{
return a.val>b.val;//大于小于号的方向与大小相反
}
}node[];
int main()
{
priority_queue<int>v;
priority_queue<int,vector<int>,greater<int> >q;
priority_queue<Node>p;
int n,x;
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d",&x);
node[i].val=x;
v.push(x);
q.push(x);
p.push(node[i]);
}
while(!v.empty())
{
printf("%d ",v.top());
v.pop();
}
printf("\n");
while(!q.empty())
{
printf("%d ",q.top());
q.pop();
}
printf("\n");
while(!p.empty())
{
printf("%d ",p.top().val);
p.pop();
}
return ;
}
简单STL笔记的更多相关文章
- STL笔记(3) copy()之绝版应用
STL笔记(3) copy()之绝版应用 我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏 ...
- STL笔记(1)map
STL笔记(1)map STL之map ZZ from http://hi.baidu.com/liyanyang/blog/item/d5c87e1eb3ba06f41bd576cf.html 1. ...
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
- Effective STL 笔记 -- Item 6 ~ 7: Container and Object Pointer
Effective STL 笔记 – Item 6 ~ 7: Container and Object Pointer 中间两次笔记被删掉了,简单补一下: Item 3 中提到如果将对象直接放入容器中 ...
- 3.2 配置构建Angular应用——简单的笔记存储应用
本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- STL笔记(5)条款49:学习破解有关STL的编译器诊断信息
STL笔记(5)条款49:学习破解有关STL的编译器诊断信息 条款49:学习破解有关STL的编译器诊断信息 用一个特定的大小定义一个vector是完全合法的, vector<int> v( ...
- STL笔记(4)关于erase,remove
STL笔记(4)关于erase,remove 你要erase的元素很容易识别.它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素.要除去那些元素,你要做的所有事情就是用那两个迭代器调用 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
随机推荐
- 2015 Multi-University Training Contest 1 Tricks Device
Tricks Device Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 洛谷 P1033 自由落体
P1033 自由落体 题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公 ...
- Android Bitmap太大导致ImageView不显示的问题
今天做我们的智能相冊的项目时,遇到了非常奇妙的问题,当照片太大时,导致ImageView.setImageBitmap不显示,上网上搜了非常多办法.感觉都不是那么靠谱.最后使用了简单粗暴的手段: // ...
- 一起talk C栗子吧(第九十五回:C语言实例--使用共享内存进行进程间通信一)
各位看官们,大家好,上一回中咱们说的是SystemV IPC结构概述的样例,这一回咱们说的样例是:使用共享内存进行进程间通信. 闲话休提.言归正转.让我们一起talk C栗子吧! 共享内存是Syste ...
- Vue小技巧,如何导入普通JS文件
最近在开发一个展示3D模型的WEB程序,在工程中使用了VUE和ThreeJS库.Three.js本身是支持CommonJS的,但我们还用到了OBJLoader模块,此模块不支持CommonJS,改成C ...
- 安装meteor运行基本demo发生错误。
bogon:~ paul$ curl https://install.meteor.com/ | sh % Total % Received % Xferd Average Speed Time Ti ...
- 浅谈贝塞尔曲线以及iOS中粘性动画的实现
关于贝塞尔曲线,网上相关的文章很多,这里我主要想用更简单的方法让大家理解贝塞尔曲线,当然,这仅仅是我个人的理解,如有错误的地方还请大家能够帮忙指出来,这样大家才能一起进步. 贝塞尔曲线,常用到的可分为 ...
- codeforces 401 B Sereja and Contests【贪心】
题意:给出最后的时间n,div 1必须和div2一起举行,并且div2的时间总是比div1大1 给出Sereja(只能参加div2)参加过的k场比赛的时间,问他最少错过了多少场div2,最多错过了多少 ...
- GoldenGate 反向切换步骤
1 事先配置好反向复制链路: 2 停止源端的应用程序; 3 确认源端Capture已捕获所有的Redo信息: GGSCI>info all GGSCI>info ext_app 4 确认源 ...
- logsource and ALO
1.首先配置sourcedb上的nfs服务,oggstd上挂载sourcedb的online redo和archive log的目录 oggsource上配置: vi /etc/export ...