zoukankan      html  css  js  c++  java
  • STL容器 -- Map

    核心描述: map 就是从键(key) 到 值(value) 的一个映射.且键值不可重复,内部按照键值排序.

    头文件: #include <map>

    拓展: multimap 是一个多重映照容器,键值可以重复.unordered_set 是一个内部不排序的映射容器,需包含头文件<unordered_map> 

    构造方法:

    map<int, string> kvm; //构造一个键为 int 型, 值为 string 型的 map 

    元素的插入:

    kvm[1] = "abc";   // 值 "abc" 在 map 中的键值为 1                                                           ------方法1
    kvm.insert (map<int, string> :: value_type(2, "def")); // 值 "def" 在 map 中的键值为 2         ------方法2

    利用 find 查找:

    map<int, string> :: iterator it;//定义迭代器
    it = kvm.find(2);  //find 只能根据键查找,且find函数返回的是迭代器.
    if (it == kvm.end())  cout << "Not Found" <<endl;
    else cout << it->first << " " << it->second << endl; //利用 first 和 second 访问键 和 值.

    利用 count 查找:

    int cnt = kvm.count(2);  //count 按照查找的 键 返回找到的个数.由于不重复即只能返回 0 或 1

    根据键访问值:

    string ss = kvm[1]  //map 根据要访问的 "键" 返回 "键对应的值", 需要用 find 或者 count 判断 "键" 是否存在

    map 的删除:

    it = kvm.find(1);   
    kvm.erase(it);    //利用 find 找到键为 1的位置, 再通过迭代器删除元素          ---------方法1
    kvm.erase(1)     //删除键为 1 的元素, 成功返回 ”1“ 否则返回 ”0“           ---------方法2
    kvm.erase( kvm.begin(), kvm.end() );    //通过迭代器区间性删除, 区间为前闭后开   ---------方法3

    常用操作:

    kvm.clear()        //清空 map
    kvm.empty()    //判断 map 是否为空
    kvm.size()        //返回 map 中元素的个数

    其他查找函数:

    map<int, string> :: it;
    it = lower_bound(key);   //返回键值 大于等于 给定键值的第一个位置
    it = upper_bound(key);  //返回键值    大于     给定键值的第一个位置

    结构体类型的构造:

    struct NODE{
        int x; int y;
        bool operator < (const NODE& a) const{
            if(x == a.x) return y > a.y;//二级排序为 y 的降序
            return x < a.x; //以及排序为 x 的升序
        }
    };
    map<NODE, string> kvm; //必须重载结构体的 “<" 

    map 的遍历:

    map<int, string>::iterator it;
    for(it = kvm.begin(); it != kvm.end(); it++) {
        cout << it -> first  << "   " << it -> second << endl;
    }
  • 相关阅读:
    常用知识点集合
    LeetCode 66 Plus One
    LeetCode 88 Merge Sorted Array
    LeetCode 27 Remove Element
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 448 Find All Numbers Disappeared in an Array
    LeetCode 219 Contains Duplicate II
    LeetCode 118 Pascal's Triangle
    LeetCode 119 Pascal's Triangle II
    LeetCode 1 Two Sum
  • 原文地址:https://www.cnblogs.com/Ash-ly/p/5874837.html
Copyright © 2011-2022 走看看