支持重复元素的集合,演示多重并、交、和的重数演算
在经典集合论中,集合的元素具有互异性,即同一个元素不能重复出现。而多重集合 (Multiset) 允许元素重复,是普通集合的自然推广。
多重集合由一个底层元素集合与每个元素的重数(出现次数)共同确定。设 $A$ 是一个多重集合,元素 $x$ 在 $A$ 中的重数记为 $m_A(x)$。例如:
两个多重集合 $A$ 和 $B$ 在同一个全集上,其运算的重数关系如下:
#include <set>
std::multiset<int> A, B, C;
// C++ multiset 基础操作与“删除单/全部”特性的避坑指南
void demonstrate() {
A.insert(3); // 允许重复插入
A.insert(3);
int count3 = A.count(3); // count3 == 2
// ⚠️ 避坑:若调用 A.erase(3),会删掉集合中所有的 3!
// 💡 正确:若只想删掉一个 3,必须传入迭代器:
auto it = A.find(3);
if (it != A.end()) A.erase(it);
}