C++ 中 Set 和 MultiSet 的区别
在 C++ 中,Set 和 MultiSet 都是用于存储数据以方便访问和插入的数据结构类型。根据这两种数据结构的特性,我们可以区分 Set 和 MultiSet。
以下是 Set 和 MultiSet 之间的重要区别:
| 序号 | 关键点 | Set | MultiSet |
|---|---|---|---|
| 1 | 定义 | C++ 中的 Set 可以定义为一种关联容器,它以键值对的形式存储数据,其中每个值元素都必须是唯一的,因为元素的值标识了它。 | 另一方面,MultiSet 是 C++ STL(标准模板库)的一部分,定义为类似于 Set 的关联容器,存储排序的键值对,但与仅存储唯一键的 Set 不同,MultiSet 可以具有重复的键。 |
| 2 | 排序 | 对于 Set,数据按排序顺序存储。 | 对于 MultiSet,数据也按排序顺序存储。 |
| 3 | 重复值 | 在 Set 中,不允许存储重复值。 | 另一方面,在 MultiSet 中,我们可以存储重复值。 |
| 4 | 操作 | 对于 Set,一旦插入就不能更改值,但是我们可以删除它或再次插入它。 | 然而,对于 MultiSet,一旦插入也不能更改值。 |
示例
Set
#include
#include
using namespace std;
main() {
int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
set my_set;
for(int i = 0; i<15; i++) { my_set.insert(data[i]);
}
set::iterator it;
for(it = my_set.begin(); it != my_set.end(); it++) {
cout << "Item: " << *it << endl;
}
}输出
Item: 11 Item: 22 Item: 23 Item: 33 Item: 41 Item: 44 Item: 55 Item: 66 Item: 77 Item: 88 Item: 99
示例
MultiSet
#include
#include
using namespace std;
main() {
int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
multiset my_set;
for(int i = 0; i<15; i++) { my_set.insert(data[i]);
}
multiset::iterator it;
for(it = my_set.begin(); it != my_set.end(); it++) {
cout << "Item: " << *it << endl;
}
}输出
Item: 11 Item: 11 Item: 22 Item: 22 Item: 23 Item: 33 Item: 41 Item: 44 Item: 55 Item: 66 Item: 66 Item: 66 Item: 77 Item: 88 Item: 99
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP