简单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 [命令或配置文件] 功能描述:获得帮助信 ...
随机推荐
- ASP.NET-文件上传代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- ASP.NET-缓存基本知识点
asp.net cache是一种缓存技术,然而,我们在asp.net程序中还可以使用其他的缓存技术,这些不同的缓存也各有所长.由于asp.net cache不能提供对外访问能力,因此,它不可能取代以m ...
- ASP.NET-ajax.acionlink使用
Ajax 属性的ActionLink方法可以创建一个具有异步行为的锚标签. ActionLink方法的第一个参数指定了链接文本,第二个参数是要异步调用的操作的名称.类似于同名的HTML辅助方法,AJA ...
- 理解Swift中map 和 flatMap对集合的作用
map和flatMap是函数式编程中常见的概念,python等语言中都有.借助于 map和flapMap 函数可以非常轻易地将数组转换成另外一个新数组. map函数可以被数组调用,它接受一个闭包作为參 ...
- SQL Server 运行计划操作符具体解释(3)——计算标量(Compute Scalar)
接上文:SQL Server 运行计划操作符详细解释(2)--串联(Concatenation ) 前言: 前面两篇文章介绍了关于串联(Concatenation)和断言(Assert)操作符,本文介 ...
- oracle学习 第一章 简单的查询语句 ——03
1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...
- 直接插入排序(Straight Insertion Sort)
直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表. /* 对顺序表L作直接插入排序 */ void ...
- Hibernate_9_Person和IdCard实例_一对一关系:基于主键
1)建立Person类:(与8同样) 2)建立IdCard类:(与8同样) 3)建立持久化类: 1>保存方法(与8同样) 2>获取方法(与8同样) 3>删除方法(与8同样) ...
- hdoj--1312--Red and Black(dfs)
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 37.创建自定义的指令的限制使用 通过restrict 设置
转自:https://www.cnblogs.com/best/tag/Angular/ 1. 元素名 <runoob-directive></runoob-directive> ...