小知识

one#

a&b + a|b = a + b;
(a&b) << 1 + (a^b) = a + b;

two#

set的插入以及删除

set<int> s; 
s.insert(x); // 插入x
s.erase(s.find(x));//假设我们要删除s中的x ,这里是删除迭代器
s.erase(x); // 也可以直接删除
for(int x: s) cout << x << endl; // 遍历 set

set遍历删除的时候会出问题,最好避免这种写法
这里推荐一种写法 CF1753-C

// 这里 u = 0 要换成最小值
for(int u = 0; s.upper_bound(u) != s.end(); ) {
    u = *s.upper_bound(u);
    s.erase(u); 
}

three#

multiset 包含重复元素的set

multiset<int> s;
s.insert(5);
cout << s.count(x); // 返回 s 中 x 的个数
s.erase(s.find(x)); //删除 s 中的一个 x
s.erase(x); //删除 s 中的全部 x, 有返回值 x 的个数
s.erase(posa, posb); //删除迭代器posa - posb 之间的数字
s.clear(); // 清空 s

一道STL题目
LC2034
map+堆 以及 multiset + map 第二种写法LC双百

posted @   ccz9729  阅读(43)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩