C++中map容器提供一个键值对(key/value)容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。需要包含头文件map。对于迭代器来说,可以修改实值,而不能修改key。Map会根据key自动排序。升序排序

 //1.定义和初始化map<int,string> map1;                  //空map//2.常用操作方法map1[3] = "Saniya";                    //添加元素map1.insert(map<int,string>::value_type(2,"Diyabi"));//插入元素//map1.insert(pair<int,string>(1,"Siqinsini"));map1.insert(make_pair<int,string>(4,"V5"));string str = map1[3];                  //根据key取得value,key不能修改map<int,string>::iterator iter_map = map1.begin();//取得迭代器首地址int key = iter_map->first;             //取得ekystring value = iter_map->second;       //取得valuemap1.erase(iter_map);                  //删除迭代器数据map1.erase(3);                         //根据key删除valuemap1.size();                       //元素个数map1.empty();                       //判断空map1.clear();                      //清空所有元素//3.遍历for(map<int,string>::iterator iter = map1.begin();iter!=map1.end();iter++){int keyk = iter->first;string valuev = iter->second;}

map的基本操作函数:
      C++ Maps是一种关联式容器,包含“关键字/值”对
      begin()          返回指向map头部的迭代器
      clear()         删除所有元素
      count()          返回指定元素出现的次数
      empty()          如果map为空则返回true
      end()            返回指向map末尾的迭代器
      equal_range()    返回特殊条目的迭代器对
      erase()          删除一个元素
      find()           查找一个元素
      get_allocator()  返回map的配置器
      insert()         插入元素
      key_comp()       返回比较元素key的函数
      lower_bound()    返回键值>=给定元素的第一个位置
      max_size()       返回可以容纳的最大元素个数
      rbegin()         返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器
      size()           返回map中元素的个数
      swap()            交换两个map
      upper_bound()     返回键值>给定元素的第一个位置
      value_comp()      返回比较元素value的函数

set

set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同。Set默认自动排序。

常用操作:
1.元素插入:insert()
2.中序遍历:类似vector遍历(用迭代器)
3.反向遍历:利用反向迭代器reverse_iterator。
    例:
    set<int> s;
    ......
    set<int>::reverse_iterator rit;
    for(rit=s.rbegin();rit!=s.rend();rit++)
4.元素删除:与插入一样,可以高效的删除,并自动调整使红黑树平衡。
            set<int> s;
            s.erase(2);        //删除键值为2的元素
            s.clear();
5.元素检索:find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。
            set<int> s;
            set<int>::iterator it;
            it=s.find(5);    //查找键值为5的元素
            if(it!=s.end())    //找到
                cout<<*it<<endl;
            else            //未找到
                cout<<"未找到";
6.自定义比较函数
    (1)元素不是结构体:
        例:
        //自定义比较函数myComp,重载“()”操作符
        struct myComp
        {
            bool operator()(const your_type &a,const your_type &b)
            [
                return a.data-b.data>0;
            }
        }
        set<int,myComp>s;
        ......
        set<int,myComp>::iterator it;
    (2)如果元素是结构体,可以直接将比较函数写在结构体内。
        例:
        struct Info
        {
            string name;
            float score;
            //重载“<”操作符,自定义排序规则
            bool operator < (const Info &a) const
            {
                //按score从大到小排列
                return a.score<score;
            }
        }
        set<Info> s;
        ......
        set<Info>::iterator it;

stl-map/set相关推荐

  1. C++ 笔记(24)— STL map 类(map实例化、插入、查找、删除)

    1. STL 映射类简介 map 和 multimap 是键-值对容器,支持根据键进行查找,区别在于,后者能够存储重复的键,而前者只能存储唯一的键. 为了实现快速查找, STL map 和 multi ...

  2. STL map 简介

    STL map 简介 转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html 1.目录 map简介 map的功能 使用ma ...

  3. 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~

    某公司招聘的面试环节, 有这样一个题目:结构体作为STL map的key时需要注意什么? 对于懂STL map的同学来说, 这个题目还是比较easy的, 先看程序: #include <iost ...

  4. Dictionary,hashtable, stl:map有什么异同?

    Dictionary,hashtable, stl:map有什么异同? 相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采 ...

  5. C++ STL map的使用

    C++ STL map的使用   2009-12-11 作者:tanker1024 来源:tanker1024的blog   1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的 ...

  6. 学习STL map, STL set之数据结构基础

    STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. C++ STL 之所以得到广泛的赞誉,也被很多人使用 ...

  7. STL map与Boost unordered_map - 有何不可的日志 - 网易博客

    STL map与Boost unordered_map - 有何不可的日志 - 网易博客 STL map与Boost unordered_map 2012-03-30 16:06:26|  分类: c ...

  8. STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树

    STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树 最近在做项目时发现一个crash的问题,当时得到的dmp文件显示crash在一个以map为循环变量的循环中,crash位置在如下 ...

  9. stl::map之const函数访问

    如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...

  10. STL map使用

    map属于c++STL中的一种,是有不能重复的关键字和与之相关的值组成(若键值重复,则这个键值所对应的值为最后一次所赋给的值): #include <string.h> #include ...

最新文章

  1. 译 | 缓存穿透问题导致Facebook史上最严重事故之一
  2. vue2.0 通过ip访问自己运行的项目
  3. EfficientPS:目前排名第一的高效高精度全景分割算法
  4. 外媒:Airbnb为2020年直接上市作准备
  5. sql server 约束
  6. 大学课程很少有教怎么设计单片机开发板,进阶板更不用说
  7. Rayman的绝顶之路——Leetcode每日一题打卡15
  8. 2020高中计算机会考成绩查询,2020年高中会考成绩查询入口
  9. 上古卷轴5 Papyrus的LOG日志分析,科学解决ctd,bug的方法
  10. 初学原生ajax(1):原生AJAX的简单介绍与使用
  11. 人工智能-语音交互-NLP自然语言(三) 语法-敲黑板
  12. 利用python对b站某GPT-4解说视频的近万条弹幕进行爬取、数据挖掘、数据分析、弹幕数量预测及情绪分类
  13. vue控制滚动条滑到某个位置
  14. .Net 常用的ORM框架
  15. 2000-XP-2003操作系统常见问题
  16. qpython3:安卓上运行Python
  17. 二、神奇的自然常数e之“自然”之力
  18. 使用c语言实现的fifo程序,C语言实现标准FIFO
  19. 古月ROS入门21讲学习笔记
  20. js添加多marker 高德地图_高德地图点聚合--Marker多点聚合及多个marker点击事件

热门文章

  1. MySQL表最大能达到多少?
  2. HDU 1108.最小公倍数-辗转相除法
  3. 【uiautomator】UiDevice
  4. 从缓冲上看阻塞与非阻塞socket在发送接收上的区别(转载)
  5. Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR 请求头
  6. 向SharePoint页面添加后台代码
  7. Python3.5 报错:NameError: name 'reload' is not defined
  8. who whoami who am i的区别
  9. nginx动静分离和负载均衡
  10. 远程唤醒linux系统方法