文章目录
- 一、mulset 容器
- 1、std::multiset 容器简介
- 2、代码示例 - multiset 容器
- 二、std::multiset 容器 常用操作 api 简介
- 1、常用 api 简介
- 2、代码示例 - multiset 容器常用操作
一、mulset 容器
1、std::multiset 容器简介
在 C 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , 提供了 std::multiset 容器 ,
- 该容器中的元素的 键值 可以重复 ;
- 该容器中的元素 是 有序的 , 按照指定的规则 进行排序 ;
向 std::multiset 容器 中 插入元素时 , 不需要验证集合中是否已经存在该元素 , 直接根据排序规则 , 插入到指定的位置 ;
std::multiset 容器 不支持 将 元素插入到指定位置 ;
std::multiset 容器 也不支持 使用 下标位置 直接访问元素 ;
使用 std::multiset 容器前 , 需要 导入 set 头文件 ;
代码语言:javascript复制#include "set"
与 set 容器类似的 容器还有 multiset 容器 , 唯一区别是 set 中的元素只能出现一次 , multiset 中的元素可以出现多次 ;
std::multiset 容器 中的元素 不能直接修改 , 只能 先删除 原来的元素 , 然后插入新元素 ;
2、代码示例 - multiset 容器
在下面的代码中 , 创建了一个 multiset 容器 , 存储重复的元素 ;
代码语言:javascript复制multiset<int> myMultiSet = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
上述容器初始化时 , 会自动对容器中的元素进行排序 , 排序后的顺序如下 :
代码语言:javascript复制1 1 2 2 3 3 4 4 5
代码示例 :
代码语言:javascript复制#include "iostream"
using namespace std;
#include "set"
int main() {
// 初始化 multiset 容器
multiset<int> myMultiSet = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
// 遍历打印 multiset 中的所有元素
for (auto& elem : myMultiSet) {
cout << elem << " ";
}
cout << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
代码语言:javascript复制1 1 2 2 3 3 4 4 5
请按任意键继续. . .
二、std::multiset 容器 常用操作 api 简介
1、常用 api 简介
std::multiset 容器 常用操作 : std::multiset 容器 与 std::set 容器 操作 的 接口基本相同 ;
- insert() : 向 multiset 容器中插入一个或多个元素 ;
- erase() : 删除 multiset 容器 中的一个或多个元素 ;
- clear() : 清空 multiset 容器中的所有元素 ;
- find() : 在 multiset 容器 中查找一个特定元素 ;
- count() : 返回 multiset 容器 中 特定元素的数量 , 该函数 set 容器中只能返回 0 或 1 , 在 multiset 容器中才有意义 ;
- lower_bound() : 返回 multiset 容器 中 大于等于 给定键值的元素 的 范围 ;
- upper_bound() : 返回 multiset 容器 中 大于 给定键值的元素 的 范围 ;
- equal_range() : 返回 multiset 容器 中 等于 给定键值的元素 的 范围 ;
2、代码示例 - multiset 容器常用操作
代码示例 :
代码语言:javascript复制#include "iostream"
using namespace std;
#include "set"
void printMS(multiset<int>& ms) {
// 遍历打印 multiset 中的所有元素
for (auto& elem : ms) {
cout << elem << " ";
}
cout << endl;
}
int main() {
// 初始化 multiset 容器
multiset<int> myMultiSet = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
// 遍历打印容器
printMS(myMultiSet);
// 插入元素
myMultiSet.insert(9);
// 遍历打印容器
cout << "插入元素 9 : ";
printMS(myMultiSet);
// 删除元素
myMultiSet.erase(3);
// 遍历打印容器
cout << "删除元素 3 : ";
printMS(myMultiSet);
// 获取元素数量
int count = myMultiSet.count(2);
// 遍历打印容器
cout << "元素 2 个数 : " << count << endl;
printMS(myMultiSet);
// 清空元素
myMultiSet.clear();
// 遍历打印容器
cout << "清空元素 : ";
printMS(myMultiSet);
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
1 1 2 2 3 3 4 4 5 插入元素 9 : 1 1 2 2 3 3 4 4 5 9 删除元素 3 : 1 1 2 2 4 4 5 9 元素 2 个数 : 2 1 1 2 2 4 4 5 9 清空元素 : 请按任意键继续. . .