1. 面向对象的三个特性
      1. 封装:隐藏对象的属性及实现细节,仅仅提供接口和方法
      2. 继承:一个对象直接使用另一个对象的成员及方法,扩展已经存在的代码
      3. 多态:为了实现接口的重用
    2. unordered_map 以及 map
      1. unordered_map
        1. 底层实现是哈希表
        2. 无序
        3. 插入、删除、判断key平均时间复杂度均为O(1)
        4. 哈希函数可能存在哈希冲突,不同的key映射到同一个位置,开放寻址法或者链地址法
      2. map
        1. 底层实现是红黑树
        2. 有序,会按照key的值从大到小进行排列
        3. 插入删除时间复杂度均为O(logn)
        4. 查询时间比较稳定
      3. 两个容器里面的元素类型均为pair类型
      4. 在需要有序或者对单次查询有时间要求的应用场景下,应该使用map
      5. insert已经存在的key,会自动忽略这个key,替换的话需要先判断是否存在,再使用map[key]进行修改