想了好久,还是把自己了解的先整理一下吧,毕竟老是忘,这里主要简单介绍三种容器 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笔记的更多相关文章

  1. STL笔记(3) copy()之绝版应用

    STL笔记(3) copy()之绝版应用 我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏 ...

  2. STL笔记(1)map

    STL笔记(1)map STL之map ZZ from http://hi.baidu.com/liyanyang/blog/item/d5c87e1eb3ba06f41bd576cf.html 1. ...

  3. STL笔记(6)标准库:标准库中的排序算法

    STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...

  4. Effective STL 笔记 -- Item 6 ~ 7: Container and Object Pointer

    Effective STL 笔记 – Item 6 ~ 7: Container and Object Pointer 中间两次笔记被删掉了,简单补一下: Item 3 中提到如果将对象直接放入容器中 ...

  5. 3.2 配置构建Angular应用——简单的笔记存储应用

    本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...

  6. Log4j简单学习笔记

    log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...

  7. STL笔记(5)条款49:学习破解有关STL的编译器诊断信息

    STL笔记(5)条款49:学习破解有关STL的编译器诊断信息 条款49:学习破解有关STL的编译器诊断信息 用一个特定的大小定义一个vector是完全合法的, vector<int> v( ...

  8. STL笔记(4)关于erase,remove

    STL笔记(4)关于erase,remove 你要erase的元素很容易识别.它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素.要除去那些元素,你要做的所有事情就是用那两个迭代器调用 ...

  9. Linux——帮助命令简单学习笔记

    Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...

随机推荐

  1. vps上运行serv-u的问题

    为了给产品环境建个测试站,今天特意申请一个vps来做开发用,但运行了Serv-U的ServUDaemon.exe后始终提示: 响应: 530 User czhan cannot log in. 很无语 ...

  2. 10.29 工作笔记 ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)

    ndk编译C++.提示找不到头文件(ndk-build error: string: No such file or directory) 被这个问题弄得愁眉苦脸啊.心想为啥一个string都找不到呢 ...

  3. poj_1195Mobile phones,二维树状数组

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...

  4. js中Json字符串如何转成Json对象(4种转换方式)

    js中Json字符串如何转成Json对象(4种转换方式) 一.总结 一句话总结:原生方法(就是浏览器默认支持的方法) 浏览器支持的转换方式(Firefox,chrome,opera,safari,ie ...

  5. 1.Windows7下安装与破解IntelliJ IDEA2017

    转自:https://www.cnblogs.com/justuntil/p/7245170.html IDEA 全称 IntelliJ IDEA,是Java语言开发的集成环境,IntelliJ在业界 ...

  6. NOIP2017 小凯的疑惑 解题报告(赛瓦维斯特定理)

    题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的 ...

  7. mysql if使用实例

    //DELIMITER DROP PROCEDURE if EXISTS createAmountCount; create PROCEDURE createAmountCount() BEGIN D ...

  8. linux中不同颜色的文件代表什么不同的类型

    linux 文件颜色的含义,蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件.蓝色文件----------目. ...

  9. MyBatis、JDBC、Hibernate区别

    从层次上看,JDBC是较底层的持久层操作方式,而Hibernate和MyBatis都是在JDBC的基础上进行了封装使其更加方便程序员对持久层的操作. 从功能上看, JDBC就是简单的建立数据库连接,然 ...

  10. jsp登录会话

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...