zoukankan      html  css  js  c++  java
  • STL笔记之set

    //---------------------------------------------------------
    // set综述
    //---------------------------------------------------------
    1.set数据结构的实现:红黑树(平衡二叉树的一种)
    2.在往set中插入元素时,会自动进行排序
    3.set在搜寻元素时具有良好的性能,其搜寻函数算法具有对数复杂度
      [在拥有1000个元素的set中搜寻元素,二叉树搜寻动作(由成员函数执行)的平均时间为线性搜寻时间的1/50]
    4.自动排序造成set的一个重要限制:你不能直接改变元素值,因为这样会打乱原本正确的顺序,
      因此,要改变元素值,必须先删除旧元素,再插入新元素
    5.set不允许元素重复,multiset允许元素重复
     
    //---------------------------------------------------------
    //
    //---------------------------------------------------------
    // A
    set<int> setTest;
    setTest.insert(3);
    setTest.insert(1);
    setTest.insert(2);
    setTest.insert(100);
    插入元素时会自动进行排序

    // B
    set<int>::iterator iter = setTest.find(2);
    if (setTest.end() != iter)
    {
     *iter = 1000;
    }
    虽然可以这样直接改变元素的值,但这样会打乱原本正确的顺序
    所以,
    iter = setTest.find(100)
    会发现 iter == setTest.end()
    即没有找到值为100的元素,实际上set中是有这个元素的。
    造成这一结果的原因就在于打乱了set中原本正确的顺序。

  • 相关阅读:
    微博粉丝服务---“公众号”开发
    springboot --- 之SSM框架整合
    Android 接收短信
    数字币开发相关
    boot camp要求独立的fat分区
    u盘安装 osx 出现 “不能验证”
    微软驱动签名
    centos7 安装 isign
    用windbg查看dmp文件,定位bug位置
    H5移动端,ios从后台返回到app,页面会白一下
  • 原文地址:https://www.cnblogs.com/Hisin/p/3152931.html
Copyright © 2011-2022 走看看