zoukankan      html  css  js  c++  java
  • (C/C++学习)30.STL之set容器

    说明:set 中所有元素都会根据元素的键值自动被排序。set 的元素不像 map 那样可以同时拥有实值和键值,set 的元素即是键值又是实值。set 不允许两个元素有相同的键值。不可以通过 set 的迭代器改变 set 元素的值,因为 set 元素值就是其键值,关系到 set 元素的排序规则。如果任意改变 set 元素值,会严重破坏 set 组织。换句话说,set 的 iterator 是一种 const_iterator。

    注意:multiset 特性及用法和 set 完全相同,唯一的差别在于它允许键值重复。set 和 multiset的底层实现是红黑树,红黑树为平衡二叉树的一种。

    1.构造函数

    1 set<T> st;//set 默认构造函数:
    2 mulitset<T> mst; //multiset 默认构造函数:
    3 set(const set &st);//拷贝构造函数

    2.赋值操作

    1 set& operator=(const set &st);//重载等号操作符
    2 swap(st);//交换两个集合容器

    3.set大小操作

    1 size();//返回容器中元素的数目
    2 empty();//判断容器是否为空

    4.插入和删除操作

    1 insert(elem);//在容器中插入元素
    2 clear();//清除所有元素
    3 erase(pos);//删除 pos 迭代器所指的元素,返回下一个元素的迭代器
    4 erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器
    5 erase(elem);//删除容器中值为 elem 的元素

    5.查找操作

    1 find(key);//查找键 key 是否存在,若存在,返回该键的元素的迭代器;若不存在,返回 set.end()
    2 count(key);//查找键 key 的元素个数
    3 lower_bound(keyElem);//返回第一个 key>=keyElem 元素的迭代器
    4 upper_bound(keyElem);//返回第一个 key>keyElem 元素的迭代器
    5 equal_range(keyElem);//返回容器中 key 与 keyElem 相等的上下限的两个迭代器
  • 相关阅读:
    hdu1238 Substrings
    CCF试题:高速公路(Targin)
    hdu 1269 迷宫城堡(Targin算法)
    hdu 1253 胜利大逃亡
    NYOJ 55 懒省事的小明
    HDU 1024 Max Sum Plus Plus
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1257 最少拦截系统
    HDU 1069 Monkey and Banana
    HDU 1104 Remainder
  • 原文地址:https://www.cnblogs.com/tuihou/p/12419420.html
Copyright © 2011-2022 走看看