📅  最后修改于: 2023-12-03 14:59:46.225000             🧑  作者: Mango
在C++ STL(标准模板库)中,Multiset和Multimap是两个常用的数据结构,两者非常相似,但也有一些明显的区别,本文将对这些区别进行介绍。
Multiset中只存储元素值,而Multimap中存储的是键值对。Multimap需要额外存储键值对,因此存储空间会比Multiset大。
Multiset中可存储重复元素,即Multiset中的元素可以重复。而Multimap中的键是唯一的,值可以重复。这意味着Multiset中的元素是无序的,而Multimap中的元素是按键排序的。
Multiset中可以使用STL中的find函数来查找元素,因为Multiset中没有键值对的概念,只能通过元素的值进行查找。而在Multimap中,我们可以使用STL中的find函数来查找键,但是要查找键值对需要使用双关键字查找。
#include <iostream>
#include <set>
#include <map>
using namespace std;
int main()
{
// Multiset示例代码
multiset<int> s;
s.insert(1);
s.insert(3);
s.insert(3);
s.insert(2);
s.insert(2);
s.insert(2);
cout << "Multiset中的元素:";
for (auto i : s)
{
cout << i << " ";
}
cout << endl;
// Multimap示例代码
multimap<int, string> m;
m.insert(pair<int, string>(1, "apple"));
m.insert(pair<int, string>(5, "banana"));
m.insert(pair<int, string>(2, "orange"));
m.insert(pair<int, string>(2, "peach"));
m.insert(pair<int, string>(3, "pear"));
cout << "Multimap中的元素:";
for (auto i : m)
{
cout << "(" << i.first << ", " << i.second << ") ";
}
cout << endl;
return 0;
}
输出结果如下:
Multiset中的元素:1 2 2 2 3 3
Multimap中的元素:(1, apple) (2, orange) (2, peach) (3, pear) (5, banana)