STL 中 set、map、queue 的简单使用方法

set  内部为二叉搜索树

#include <set>
#include <cstdio>
using namespace std;
int main()
{
    //声明
    set<int> s;

    //插入元素
    s.insert(1);
    s.find(2);
    s.erase(3);

    //查找元素方法1(用迭代器查找)
    set<int>::iterator ite;
    ite = s.find(2);
    if(ite == s.end()) puts("not found");
    else puts("found");

    //查找元素方法2(通过计数)
    if(s.count(3) != 0) puts("found");
    else puts("not found");

    //删除元素
    s.erase(3);
    
    return 0;
}

map  内部为红黑树

#include <map>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
    //int 为键,const char* 为值
    map<int, const char*> m;

    //插入元素
    m.insert(make_pair(1, "one"));
    m.insert(make_pair(10, "ten")); 
    m[2] = "two";  //这样插入也可以

    //查找元素(用迭代器)
    map<int, const char*>::iterator ite;
    ite = m.find(1);
    if(ite == m.end()) puts("not found");
    else puts(ite->second);
    puts(m[10]);  //或者直接输出要查找的内容,若查找不到则无任何输出

    //删除元素
    m.erase(10);

    //遍历所有元素
    for(ite = m.begin(); ite != m.end(); ite++){
        printf("%d %s\n", ite->first, ite->second);
    }
    return 0;
}

queue 队列

#include <cstdio>
#include <queue>
using namespace std;
int main()
{
    //声明
    queue<int> que;
    //将元素入队
    que.push(1);
    que.push(2);  
    //判断队列是否为空,是的话返回 1 ,否则返回 0
    if(que.empty()) printf("Empty!");
    else printf("%d\n", que.size());  //返回队列中的元素个数
    //返回队列的第一个元素
    printf("%d\n", que.front());
    //返回队列中最后一个元素
    printf("%d\n", que.back());
    //弹出队列中的第一个元素
    que.pop();

    //默认优先队列
    priority_queue<int> q;
    //在默认的优先队列中,优先级高的先出队,此时top为当前优先队列中最大的元素
    printf("%d\n", q.top());

    //创建一个低优先级元素先出对列的优先队列
    priority_queue< int, vector<int>, greater<int> > q;
    //此时top为当前优先队列中最小的元素
    printf("%d\n", q.top());
    
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值