zoukankan      html  css  js  c++  java
  • set/multiset和map/multimap用法小结

    二叉搜索树是ACM中经常需要用到的数据结构,熟练掌握map和set的用法很关键,现对其做一个简单的总结。

    主要的功能有:插入元素,查找元素,删除,遍历/反向遍历。

    插入,删除和查找操作的时间都和树的高度成正比。即如果有n个元素,每次操作的时间复杂度是O(logn)。

    现以map为例说明用法,multimap是可以插入重复键值的元素的map。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<set>
    #include<vector>
    #include<algorithm>
    #include<stack>
    #include<queue>
    #include<cctype>
    #include<sstream>
    using namespace std;
    int main()
    {
        //map的用法
        //map是根据键值(尖括号里的第一个元素)的大小排序(默认从小到大排)
        map<string,int>mp;
        //插入元素
        mp.insert(make_pair("a",1));//插入方法1
        mp["b"]=2;//插入方法2
        //遍历元素
        map<string,int>::iterator it;//迭代器
        for(it=mp.begin();it!=mp.end();it++)//遍历,注意不能写成it<mp.end()
        {
            cout<<(*it).first<<' '<<(*it).second<<endl;//输出方法1
            cout<<it->first<<' '<<it->second<<endl;//输出方法2
        }
        //反向遍历元素
        map<string,int>::reverse_iterator rit;//反向迭代器
        for(rit=mp.rbegin();rit!=mp.rend();rit++)
        {
            cout<<(*rit).first<<' '<<(*rit).second<<endl;//输出方法1
            cout<<rit->first<<' '<<rit->second<<endl;//输出方法2
        }
        //查找元素
        it=mp.find("a");//返回迭代器位置
        cout<<it->first<<' '<<it->second<<endl;
        //删除元素
        mp.erase("a");//删一个
        mp.clear();//清空
        /*multimap用法类似,区别是只能用insert()的写法插入元素;
        删除时把重复的元素也会全删掉;查找时如果有重复元素,返回
        第一个迭代器的位置。*/
        return 0;
    }

    set/multiset的用法与此类似,用insert()插入元素。

  • 相关阅读:
    Linux操作篇之配置Samba
    Chrome扩展实现网页图片右键上传(以E站图片搜索为例)
    Linux开机自动挂载NFS配置的一个误区
    ffmpeg指令解读海康威视摄像头
    linux服务器性能调优之tcp/ip性能调优
    多线程程序设计中的8条简单原则
    初识文件系统
    socket中的listen到底干了哪些事情?
    ip面向无连接?TCP面向连接?HTTP连接方式?
    网络层和数据链层的区别
  • 原文地址:https://www.cnblogs.com/zywscq/p/4245192.html
Copyright © 2011-2022 走看看