如何计算多图中重复对的数量
How to count number of duplicate pairs in multimap
如何计算整数对的多重映射中重复对(具有相同的键和值)的数量?
例如,我的多图包含 {(6,2)、(6,2)、(6,3) 和 (6,4)} 对,因此重复计数为 1,因为我有 1 个重复对在我的多图中。我尝试过使用 find() 和 count() 等方法,但无济于事。任何帮助将不胜感激!
一种常见的方法是使用 std::set
。这不能包含重复数据。
我们将尝试使用其范围构造函数将所有数据放入 std::set
。使用CTAD让写作更简单。
然后我们将 std::multimap
的大小与 std::set
的大小进行比较,并得到所有重复项的数量。
所以它归结为一个非常简单的程序。请看:
#include <iostream>
#include <map>
#include <set>
int main()
{
// Source data
std::multimap<int, int> mm = { {6, 2}, {6, 3}, {6, 2}, {6, 4} };
// Use range constructor and CTAD to put the data into a set
std::set s(mm.begin(), mm.end());
// Show result
std::cout << "Number of duplicates: " << mm.size() - s.size() << "\n";
return 0;
}
如果有不同的要求,请反馈,我会创建一个额外的解决方案。
如何计算整数对的多重映射中重复对(具有相同的键和值)的数量?
例如,我的多图包含 {(6,2)、(6,2)、(6,3) 和 (6,4)} 对,因此重复计数为 1,因为我有 1 个重复对在我的多图中。我尝试过使用 find() 和 count() 等方法,但无济于事。任何帮助将不胜感激!
一种常见的方法是使用 std::set
。这不能包含重复数据。
我们将尝试使用其范围构造函数将所有数据放入 std::set
。使用CTAD让写作更简单。
然后我们将 std::multimap
的大小与 std::set
的大小进行比较,并得到所有重复项的数量。
所以它归结为一个非常简单的程序。请看:
#include <iostream>
#include <map>
#include <set>
int main()
{
// Source data
std::multimap<int, int> mm = { {6, 2}, {6, 3}, {6, 2}, {6, 4} };
// Use range constructor and CTAD to put the data into a set
std::set s(mm.begin(), mm.end());
// Show result
std::cout << "Number of duplicates: " << mm.size() - s.size() << "\n";
return 0;
}
如果有不同的要求,请反馈,我会创建一个额外的解决方案。