想了好久,还是把自己了解的先整理一下吧,毕竟老是忘,这里主要简单介绍三种容器 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. hdu5391Zball in Tina Town

    //求(n-1)!%n //n 为合数,答案为0,n为素数 . 威尔逊定理可得 //判定一个自然数是否为素数的充分必要条件. 即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ) ...

  2. iOS9适配小结

    前言 最新公布的app版本号适配了iOS9.总结一下适配过程的几个要点. Bitcode iOS9此番推出了新的特性:Bitcode,关于Bitcode的资料大家能够在网上找.Bitcode要求pro ...

  3. 三步实现沉浸式状态栏(即状态栏与APP同色)

              本篇实现的是沉浸式状态栏.先明白下概念,什么是状态栏?直接上图:                什么是沉浸式状态栏?演示样例图例如以下:                       ...

  4. oracle新手随记10

    1. unpivot注意点:select new_col from (select ename,job,to_char(sal) as sal,null as c from emp)         ...

  5. POJ --3045--Cow Acrobats(贪心模拟)

    Cow Acrobats Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit ...

  6. 转一篇100offer的采访~35岁程序员是一种什么状态

    随着互联网的高速发展变革,大龄恐惧症越来越多地在技术圈被人讨论.很多程序员在工作5-10年以后,都会开始思考5年.10年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛弃. 特别是全民 ...

  7. [NOI2002] Savage 解题报告(扩展欧几里得)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1407 Description 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些 ...

  8. vuejs scope

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. studyLink

    http://order.csdn.net/myorder/detail?id=850343 csdn

  10. 阿里云安装mysql数据库出现2002错误解决办法

    在安装数据库的时候出现了如下错误: 解决办法如下: 1.在bin目录下 输入:kill -s 9 9907 再输入:ps -ef|grep mysql 显示如下: 2.回到lampp目录下,重启数据库 ...