美文网首页
黑马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