C++ 中 Set 和 MultiSet 的区别
c++server side programmingprogramming
在 C++ 中,Set 和 MultiSet 都是用于存储数据以便于访问和插入的数据结构类型。根据这两种数据结构的特征,我们可以区分 Set 和 MultiSet。
以下是 Set 和 MultiSet 之间的重要区别 −
Sr.不。 | 键 | 集合 | 多集 |
---|---|---|---|
1 | 定义 | C++ 中的集合可以定义为一种关联容器,它将数据存储在键值对中,其中每个值元素必须是唯一的,因为元素的值可以标识它。 | 另一方面,多集是 C++ STL(标准模板库)的一部分,被定义为与集合类似的关联容器,用于存储已排序的键值对,但与仅存储唯一键的集合不同,多集可以有重复的键。 |
2 | 排序 | 如果是集合,数据按排序顺序存储。 | 如果是多集,数据也按排序顺序存储。 |
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