简单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 [命令或配置文件] 功能描述:获得帮助信 ...
随机推荐
- 洛谷 P1193 洛谷团队训练VS传统团队训练
P1193 洛谷团队训练VS传统团队训练 题目背景 “在中学的信息学教育领域,洛谷无疑是一个相当受欢迎的辅助网站.同时有百余所学校正在通过洛谷进行信息学竞赛(以后简称OI)的教育.洛谷之所以如此受欢迎 ...
- 不安装Oracle客户端,用plsql连接远程Oracle数据库(绝对解决你的问题)
1,首先准备下载两个软件,一个是instantclient.zip,另一个是plsql安装包.但是得确定您的电脑是32位还是64位,我这边提供了32位和64位的供您下载: 百度网盘:https://p ...
- Qt之表单布局(QFormLayout)
简述 QFormLayout管理输入型控件和关联的标签组成的那些Form表单. QFormLayout是一个方便的布局类,其中的控件以两列的形式被布局在表单中.左列包括标签,右列包含输入控件,例如:Q ...
- [MST] Derive Information from Models Using Views
Redundant data or caching data is a constant source of bugs. MST adheres to the philosophy that no d ...
- Java实现二叉树的创建、递归/非递归遍历
近期复习数据结构中的二叉树的相关问题,在这里整理一下 这里包含: 1.二叉树的先序创建 2.二叉树的递归先序遍历 3.二叉树的非递归先序遍历 4.二叉树的递归中序遍历 5.二叉树的非递归中序遍历 6. ...
- 错误处理:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
部署项目时,启动Tomcat一直出错:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter SEVE ...
- vim水平摆放全部窗体的三个方法
Method1: map <F7> <ESC>:windo exe "normal \<foobar<C-W>C-W>K"<C ...
- Mongodb集群之副本集
上篇咱们遗留了几个问题 1主节点是否能自己主动切换连接? 眼下须要手动切换 2主节点读写压力过大怎样解决 3从节点每一个上面的数据都是对数据库全量拷贝,从节点压力会不会过大 4数据压力达到机器支撑不了 ...
- 几种常见sqlalchemy查询:
#简单查询 print(session.query(User).all()) print(session.query(User.name, User.fullname).all ...
- angularjs $http 服务
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...