我需要設計一個基本上存儲鍵 - 值對的數據結構,鍵是一個整數,它的值是一個字符串。我怎樣才能以排序順序在一個multimap中打印一個鍵的值
條件1:可能存在多個與Key關聯的值。
條件2:我需要打印存儲在此地圖中的所有按鍵降序排列。條件3:雖然鍵(整數)按降序排列,但它們的對應值(字符串)必須按字典順序(按升序排列)打印。
樣品輸入:
78 Eve
99 Bob
78 Alice
預期輸出:
99 Bob
78 Alice
78 Eve
通知鍵是降序排列,而這些值按升序排列。
爲此,我已經提出了下面的代碼在C++:如下所示
#include <iostream>
#include <map>
using namespace std;
int main()
{
int N;
string name;
int marks;
multimap<int, string, greater<int>> studMap;
multimap<int, string, greater<int>>::iterator itBeg, itEnd;
typedef multimap<int, string, greater<int>>::iterator mapIter;
cin >> N; // total no. of key-value pairs input by user
while (N--)
{
cin >> name >> marks; // pairs of value-key input by user - N times
studMap.insert(pair<int, string>(marks, name));
}
for (itBeg = studMap.begin(); itBeg != studMap.end(); itBeg = itEnd)
{
marks = itBeg->first;
pair<mapIter, mapIter> keyRange = studMap.equal_range(marks);
for (itEnd = keyRange.first; itEnd != keyRange.second; ++itEnd)
{
cout << marks << " " << itEnd->second << endl;
}
}
return 0;
}
但是我正在輸出:
99 Bob
78 Eve
78 Alice
而我需要對(78,愛麗絲)至(78,Eve)之前打印
您需要支持按鍵查找,還是隻需要上述操作?此外,是否有任何時間限制你需要做到這一點的能力? – templatetypedef
@templatetypedef我們確實需要通過關鍵字查找。它的效率越高,它就越好。 –