• STL set详解


    其实map和set是一个爸爸 - 红黑树爸爸,只不过set力气不够,不像map那么可以拥有一个主键(key)和实键(value).它只有一个键值并且

    set当中不能存储相同的键值(set还具有强迫症). 其实map和set的区别差不多就完了. 他们的相同点,他们底层都是使用红黑树构造的

    这使得他们的查找,插入,删除的效率都非常的高. 并且他们都是有序的,这些都非常关键! 这是一个好的容器的标准.当然set的禁忌

    也和map一样,set不能存储无法比较大小的数据. 因为构建红黑树需要比较大小. 而且在set中存储相同的键值 ,新的就会覆盖久的.

    set的特性是,所有元素都会根据元素的键值自动被排序. 我们可以通过set的迭代器改变set的元素值吗? 不行,因为set元素值就是其键

    值,关系到set元素的排列规则,如果任意改变set元素值,会严重破坏set组织. set的源代码之中看到,set<T>::iterator被定义为底层RB_

    tree的const_iterator,杜绝写入操作. 换句话说,set iterator是一种constant iterator(相对于mutable iterator).

    set拥有与list相同的某些性质: 当客户端对它进行元素新增操作或删除操作时,操作之前的所有迭代器,在操作完成之后都依然有效,当然

    那个被删除元素迭代器必然是个例外.

    set相关函数

    begin 返回一个迭代器,此迭代器指向set中的第一个元素。
    cbegin 返回一个常量迭代器,此迭代器指向set中的第一个元素。
    cend 返回一个迭代器,此迭代器指向set最后一个元素的下一个位置
    clear 清除set的所有元素。
    crbegin 返回一个常量迭代器,此迭代器指向反向set中的第一个元素。
    crbegin 返回一个常量迭代器,此迭代器指向反向set中的第一个元素。
    crend 返回一个常量迭代器,此迭代器指向反向set中最后一个元素之后的位置。
    emplace 将就地构造的元素插入到set。
    emplace_hint 将就地构造的元素插入到set,附带位置提示。
    empty 如果set为空,则返回 true。
    end 返回一个迭代器,此迭代器指向set最后一个元素的下一个位置
    erase 从指定位置移除set中的元素或元素范围。
    find 返回一个迭代器,此迭代器指向set中其键与指定键相等的元素的位置。
    get_allocator 返回集合中与给定值相等的上下限的两个迭代器.
    insert 将元素或元素范围插入到set中的指定位置。
    key_comp 将返回一个用于元素键值比较的函数
    lower_bound 返回一个迭代器,此迭代器指向set中其键值等于或大于指定键的键值的第一个元素。
    max_size 返回set的最大长度。
    rbegin 返回一个迭代器,此迭代器指向反向set中的第一个元素。
    rend 返回一个迭代器,此迭代器指向反向set中最后一个元素之后的位置。
    size 返回set中的元素数量。
    swap 交换两个set的元素。
    upper_bound 返回一个迭代器,此迭代器指向set中其键值大于指定键的键值的第一个元素。

  • 相关阅读:
    Linux手动安装Apache2.4
    Linux 定时任务 crontab
    微信小程序 wxs 使用正则替换字符串
    腾讯云 远程通过端口3306访问MYSQL数据库
    微信小程序点击内容展开隐藏评论文章等
    SGA设置
    oracle 序列
    oracle中lnnvl函数
    union 中null值合并原理
    oracle 事务读一致性(一)
  • 原文地址:https://www.cnblogs.com/zhangfuxiao/p/9319392.html
Copyright © 2020-2023  润新知