У меня есть мультикарта, состоящая из ключа, который является парой целых чисел, а значения ключей являются числами с плавающей запятой.Теперь я хочу иметь 2 самых больших значения для всех моих ключей.
В моем примере ключ (1, 1) должен привести к значениям 5.8 и 3.7.
Ключ (2, 2) должен привести к 2.4 и 1.5.
Чтобы указать на это: Я не знаю количество и внешний вид моих ключей.Поэтому я не знаю, существует ли ключ (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]));
}
}
В моем конкретном случае я не знаю, какие пары ключей определены вмоя мультикартаЯ также думаю, что, возможно, мультикарта не является правильным выбором, но я не уверен, что это лучший тип.
Я пытался сохранить векторный формат тета, но тогда сложно отследить соответствующие пары.