美文网首页
黑马C++视频笔记《STL之set/multiset》

黑马C++视频笔记《STL之set/multiset》

作者: 井底蛙蛙呱呱呱 | 来源:发表于2021-01-23 00:03 被阅读0次
    /* set/multiset容器
     * set/multiset属于关联容器,底层结构是用二叉树实现,所有元素都会在插入时自动排序.
     *
     * set和multiset的区别:
     *  - set不允许容器中有重复元素;
     *  - multiset允许容器中有重复元素;
     *
     * 构造函数:
     *  - `set<T> st;`,默认构造函数;
     *  - `set(const set &st);`,拷贝构造函数;
     *
     * 赋值:
     *  - `set& operator=(const set &st);`,重载等号运算符.
     *
     * 大小和交换:
     *  - `size();`,返回容器中元素的数量;
     *  - `empty();`,判断容器是否为空;
     *  - `swap();`,交换两个容器集合.
     *
     * 插入与删除:
     *  - `insert(elem);`,在set中插入数据;对于set,返回pair(set<T>::iterator, bool),若bool为true则表明插入成功,若是插入重复元素则会返回false;
     *         而对于multiset,则是返回set<T>::iterator.
     *  - `clear();`,清除所有数据;
     *  - `erase(iterator_pos);`,删除pos迭代器所指的元素,返回下一个元素的迭代器;
     *  - `erase(iterator_beg, iterator_end);`,删除区间[beg, end)中的所有元素,返回下一个元素的迭代器;
     *  - `erase(elem);`,删除容器中值为elem的元素.
     *
     * 查找和统计:
     *  - `find(key);`,查找key是否存在,若存在,返回该键的元素的迭代器,若不存在,则返回set.end();
     *  - `count(key);`,统计key的元素个数;对于set而言,count结果只有0和1(set元素不重复),而对于multiset而言则是返回key的计数。
     *
     *
     * pair对组:成对出现的数据,利用对组可以返回两个数据.
     * 创建方式:
     *  - `pair<type1, type2> p(val1, val2);`;
     *  - `pair<type1, type2> p = make_pair(val1, val2);`。
     *
     * pair对组数据访问:p.first返回第一个元素val1,p.second返回第二个元素val2.
     *
     *
     * 利用仿函数可以改变set容器的排序方式:
     *  - `set<type, myCompare> s;`, 在声明set时传入一个仿函数myCompare,myCompare中指定了如何进行排序.
     *
     * 注:set中存放自定义数据类型时必须定义一个排序的仿函数,不然编译器不知道怎么对自定义数据类型进行排序.
     */
    

    相关文章

      网友评论

          本文标题:黑马C++视频笔记《STL之set/multiset》

          本文链接:https://www.haomeiwen.com/subject/jvnezktx.html