24.map set(下)

valuetype就是T,

找logN

删除成功了就返回1,没删除成功就返回0

类似以下节点删掉 pos失效

一种是有做孩子或者右孩子,删除后,野指针问题,另一种是替代法,也认为是失效,意义变了

第二个更好

支持两个树swap,两个树swap,swap根节点就行,

返回这个值在里面的个数

cpp 复制代码
int main()
{
	std::set<int> myset;
	for (int i = 1; i < 10; i++)
		myset.insert(i * 10); // 10 20 30 40 50 60 70 80 90
	for (auto e : myset)
	{
		cout << e << " ";
	}
	cout << endl;

	// [30, 50]值
	// [25, 55]值
	 
	//// 返回 >= 30
	//auto itlow = myset.lower_bound(30);
	//// 返回 > 50
	//auto itup = myset.upper_bound(50);

	// 返回 >= 25
	auto itlow = myset.lower_bound(25);
	// 返回 > 55
	auto itup = myset.upper_bound(55);

	// 删除这段区间的值
	myset.erase(itlow, itup);
	for (auto e : myset)
	{
		cout << e << " ";
	}
	cout << endl;
}

删除是左闭右开

等于的值好找,大于的往上回,遍历就不划算了。

multiset不需要单独包头文件接口一样

差异:删除查找,好多个4找哪个,找中序第一个,左子树有三就是中序第一个

3比1大,往右找,找到这个3再继续往下找,说不定还有三

找到第一个,返回迭代器++就按照中序往后找

这个是删除所有4

这里更简单

查找中序第一个删除有多个通通干掉

交集要去重,如果放到set会天然去重,会排序

差集怎么办

看看3 2 0 -4在不在set内,不在就插入,在就带环就是环的入口点

这个可以改

之前搜索树分散放的。现在把key value放到结构体里面,结构体有两个成员fist 就是key second就是value,多封了一层,这是pair

pair没重载流茶入流提取所以变异不通过

存的结构可用->,

map不允许荣誉,如果key相等 value不相等,不会更新value,key相等就结束了

本质是两个const char*给initial list推出initial list是个pair,隐式类型转换成pair的stirng stirng.

一个是隐式类型转换一个是initiallizer list

相关推荐
飞Link9 小时前
深度解析 MSER 最大稳定极值区域算法
人工智能·opencv·算法·计算机视觉
bubiyoushang8889 小时前
基于CLEAN算法的杂波抑制Matlab仿真实现
数据结构·算法·matlab
C+-C资深大佬9 小时前
C++类型判断
开发语言·c++
曾经的三心草10 小时前
redis-2-数据结构内部编码-单线程-String命令
数据结构·数据库·redis
Yu_Lijing10 小时前
基于C++的《Head First设计模式》笔记——模式合作
c++·笔记·设计模式
zmzb010310 小时前
C++课后习题训练记录Day74
开发语言·c++
2401_8948281210 小时前
从原理到实战:随机森林算法全解析(附 Python 完整代码)
开发语言·python·算法·随机森林
cdut_suye10 小时前
解锁函数的魔力:Python 中的多值传递、灵活参数与无名之美
java·数据库·c++·人工智能·python·机器学习·热榜
Remember_99310 小时前
【LeetCode精选算法】前缀和专题二
算法·哈希算法·散列表
源代码•宸10 小时前
Leetcode—509. 斐波那契数【简单】
经验分享·算法·leetcode·面试·golang·记忆化搜索·动规