【发布时间】:2018-04-24 14:15:25
【问题描述】:
我有一个由一对整数组成的键组成的多重映射,键的值是浮点数。
现在我想为我的所有键设置 2 个最大值。
在我的示例中,键 (1, 1) 应产生值 5.8 和 3.7。
键 (2, 2) 应该导致 2.4 和 1.5。
指出:我不知道我的键的数量和外观。所以我不知道 key (2, 2) 是否存在。
代码如下:
int main(int argc, char** argv)
{
// Create some values - both vectors have the same size
// The pairs and the thetas may be unsorted
vector<pair<int, int>> pairs;
pairs.push_back(make_pair(1, 1));
pairs.push_back(make_pair(1, 1));
pairs.push_back(make_pair(1, 1));
pairs.push_back(make_pair(2, 2));
pairs.push_back(make_pair(2, 2));
pairs.push_back(make_pair(3, 3));
pairs.push_back(make_pair(3, 3));
pairs.push_back(make_pair(1, 1));
vector<float> theta;
theta.push_back(1.4);
theta.push_back(2.4);
theta.push_back(3.7);
theta.push_back(2.4);
theta.push_back(1.5);
theta.push_back(1.6);
theta.push_back(2.4);
theta.push_back(5.8);
multimap<pair<int, int>, float> similarities;
for (size_t i = 0; i < pairs.size(); i++) {
similarities.insert(make_pair(make_pair(pairs[i].first, pairs[i].second), theta[i]));
}
}
在我的具体情况下,我不知道我的多重映射中定义了哪些密钥对。
我还认为 multimap 可能不是正确的选择,但我不确定什么是更好的类型。
我试图保持 theta 的矢量格式,但很难跟踪相关的对。
【问题讨论】: