【发布时间】:2014-01-19 07:52:00
【问题描述】:
使用make_pair后,我得到了一些pairToCount
在这种格式中(元素 1 元素 2)= Db 中的频繁数:
(1 2) = 1
(1 3) = 1
(1 4) = 1
(2 3) = 2
(2 4) = 3
(2 5) = 1
(3 4) = 2
(5 4) = 1
我想对每个数字 (1,2,3,4,5) 执行以下操作:
首先,检查每对的数字为 1 ==>,然后将其频率相加,例如: 1 存在于以下对中:(1 2), (1 3), (1 4)==> 频率之和为=1+1+1=3
对 2、3、4,5 做同样的事情
2 在 (1 2), (2 3), (2 4),(2 5)==> 那里频繁的和是=1+2+3+1=7
3在(1 3), (2 3), (3 4)==>那里频繁的和是=1+2+2=5
等等。这是我写的代码。
int sum = 0;
int found;
for (const auto& p1 : pairToCount)
{
int r = p1.first.first;
std::cout << " (" << r;
for (const auto& p2 : pairToCount)
{
if (r == p2.first.first)
{
sum += p2.second;
found = p2.first.second;
}
else if (r == p2.first.second)
{
sum += p2.second;
found = p2.first.first;
}
else
exit;
std::cout << "," << found ;
}
std::cout << ") = "<< sum << "\n ";
sum = 0;
}
我重复打印了最后一个元素和相同的测试 + 由于没有以 4 开头的对,因此代码在这种情况下不起作用。
这是结果:
(1,2,3,4,4,4,4,4,4) = 3
(1,2,3,4,4,4,4,4,4) = 3
(1,2,3,4,4,4,4,4,4) = 3
(2,1,1,1,3,4,5,5,5) = 7
(2,1,1,1,3,4,5,5,5) = 7
(2,1,1,1,3,4,5,5,5) = 7
(3,5,1,1,2,2,2,4,4) = 5
(5,4,4,4,4,4,2,2,4) = 2
我刚刚学习了make_pair,花了4个小时阅读它,看看是否有任何示例或类似问题可以指导我,但没有运气!
【问题讨论】: