set/multiset_01
按序排列
不能指定插入位置
红黑树变体
不可以直接存取元素(即 无[?]/at(?)操作)
不可以直接修改元素值(用 先删除后添加的方式,达到相同效果)
A、头尾 添加/移除
B、随机存取
C、数据存取
1、构造函数
1.1、默认构造函数 ==> 无参构造函数
1.2、必定需要 复制构造函数 :set<T> setT(const set& st);
1.3、set<T> setT(iteratorBegin, iteratorEnd); // 迭代器区间[iteratorBegin, iteratorEnd)拷贝给setT
注意: 这里可以传数组指针,数组指针在特定情况下可以当做迭代器使用
1.4、无 // n个elemValue复制给lstT
2、赋值
2.1、重载"="操作符
set& = const set& vec;
2.2、无 // [beg, end)区间拷贝给
2.3、无 // n个elemValue拷贝给
3、迭代器操作
3.1、const_iterator set<T>::begin(); // 第1个
3.2、const_iterator set<T>::end(); // 最后1个
3.3、const_reverse_iterator set<T>::rbegin(); // 倒数第1个
3.4、const_reverse_iterator set<T>::rend(); // 倒数最后1个
4、插入
注意: 拷贝插入(ZC: 也就是类实例的话,类必须提供复制构造函数)
std::pair<set<T>::iterator, bool> pair = set::insert(elemValue); // 返回pair<指向新元素的iterator, 插入是否成功>,拷贝插入
5、删除
void set::clear();
iterator set::erase(const_iterator beg, const_iterator end); // [beg, end)区间,返回下一个元素的位置(迭代器)
iterator set::erase(const_iterator pos); // 返回下一个元素的位置(迭代器)
size_type set::erase(elemValue); // 删除 容器中 值为 elemValue的元素
6、交换
void set<T>::swap(set<T>&);
7、大小
size_type set<T>::size();
bool set<T>::empty();
8、查找
iterator set::find(key_value elem); // 返回指向elem的迭代器
size_type set::count(key_value elem); // 返回容器中值为elem的元素个数
iterator set::lower_bound(key_value elem); // 返回第一个>=elem元素的迭代器
iterator set::upper_bound(key_value elem); // 返回第一个>elem元素的迭代器
std::pair<set<T>::iterator, set<T>::iterator> pair01 = setT.equal_range(key_value elem); // 返回容器中与elem相等的上下限的两个迭代器。上限是闭区间,下限是开区间。如[beg, end)
9、排序
9.1、默认排序函数
less<T>
greater<T>
set/multiset_01的更多相关文章
随机推荐
- 评价指标的局限性、ROC曲线、余弦距离、A/B测试、模型评估的方法、超参数调优、过拟合与欠拟合
1.评价指标的局限性 问题1 准确性的局限性 准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷.比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率.所以,当 ...
- php 非递归实现分类树
本文实例讲述了php通过前序遍历树实现无需递归的无限极分类.分享给大家供大家参考.具体如下: 大家通常都是使用递归实现无限极分类都知道递归效率很低,下面介绍一种改进的前序遍历树算法,不适用递归实现无限 ...
- 面经:Bloomberg Internship第一轮
上来先问了一个系统设计的问题,一个front end, 一个back end. front end有很多UI,一个UI对10个多customers,back end有许多processor,或者pro ...
- PIMPL(一)
1 参考 <effective C++> 条款31:将文件间的编译关系降至最低 PIMPL Idiom: http://c2.com/cgi/wiki?PimplIdiom 2 什么是PI ...
- Python3 socketserver模块
socketserver(在Python2.*中的是SocketServer模块)是标准库中一个高级别的模块.用于简化网络客户与服务器的实现(在前面使用socket的过程中,我们先设置了socket的 ...
- xhtml 的三种 doctype
{1}文档宣告 <!ODCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 [there]//EN" "http://www.w4org/TR/xhtml1/DTD/ ...
- Java应用开发的一条重要经验:先建立基础设施
一旦为应用建立良好的基础设施, 后续的开发就会变得容易而快速.这些基础设施包括: 1. 线程池的建立与配置: 在 JDK 并发库的基础上建立适合于应用的多任务接口和框架: 2. 外部系统服务 ...
- Python3 简明教程
Python是由吉多·范罗苏姆(Guido Van Rossum)在90年代早期设计.它是如今最常用的编程 语言之一.它的语法简洁且优美,几乎就是可执行的伪代码. 注意:这篇教程是特别为Python3 ...
- python函数里面,一个*是可变参数的元祖,两个*是可变参数的字典
python的函数中,有时会有类似*args,**keys这样的参数,代表的是可变参数,一个*表示元祖,两个*表示字典,就是说这个函数可以接受任何类型的参数,都不会报错,有些函数为了提高可用性,会加这 ...
- C++中公有继承、保护继承、私有继承的区别
公有继承时基类中各成员属性保持不变,基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象只能访问基类中的publ ...