zoukankan      html  css  js  c++  java
  • Ch5 关联式容器(中)

    5.3 set

    1. 所有元素都会根据元素的键值自动被排序,set元素的键值就是实际值,实际值就是键值,set不允许两个元素有相同的键值;
    2. 因为set元素的值就是其键值,关系到set元素的排列规则,所以set的迭代器是constant iterator;
    3. 对set进行insert或erase操作,其迭代器在操作后仍然有效(这点和list相同);
    4. 标准STL的set是以RB-tree为底层机制的,几乎所有的set操作行为,都只是调用RB-tree的操作行为而已。

    5.4 map

    1. 所有元素都会根据元素的键值自动被排序;
    2. map的所有元素都是pair,同时拥有实际值(value)和键值(key),pair的第一元素被视为键值,第二元素被视为实际值;
    3. map不允许两个元素拥有相同的键值;
      //<stl_pair.h>
      template <class T1, class T2>
      struct pair{
          typedef T1 first_type;
          typedef T2 second_type;
          
          T1 first;
          T2 second;
      
          pair() : first(T1(), second(T2()) { }
          pair(const T1& a, const T2& b) : first(a), second(b) { }
      };
    4. 同样地,map的迭代器不允许改变map的元素内容(键值不可以,但实际值可以);
    5. 标准STL的map是以RB-tree为底层机制的,几乎所有的map操作行为,都只是调用RB-tree的操作行为而已。

    5.5 multiset

    multiset的特性及用法和set完全相同,唯一的差别在于它允许键值重复,因此它的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique()。

    5.6 multimap

    multimap的特性及用法和map完全相同,唯一的差别在于它允许键值重复,因此它的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique()。

  • 相关阅读:
    Nginx证书配置:tomcat证书jks文件转nginx证书.cet和key文件
    postgresql中实现按周统计详解
    symfony 初始化项目
    从零开始创建 symfony-cmf
    Installing Symfony project with PHP 7.3 version
    GIT Submodule的使用
    分享 koa + mysql 的开发流程,构建 node server端,一次搭建个人博客
    vue 响应式原理
    $nextTick 源码解析
    记一次webpack打包优化
  • 原文地址:https://www.cnblogs.com/atmacmer/p/6366094.html
Copyright © 2011-2022 走看看