Считать ввод в мультикарту и затем выполнить итерацию по введенным элементам.
std::multimap<int, int> m;
int a, b;
while (inFile >> a >> b) {
m.insert(std::make_pair(a, b));
}
inFile.close();
for (auto it = m.begin(); it != m.end(); ) {
std::cout << it->first << ": ";
for (auto end = m.upper_bound(it->first); it != end; it++) {
std::cout << it->second << " ";
}
std::cout << "\n";
}
Но, может быть, проще подумать о карте с вектором:
std::map<int, std::vector<int>> m;
int a, b;
while (inFile >> a >> b) {
m[a].push_back(b);
}
inFile.close();
for (auto i : m) {
std::cout << i.first << ": ";
for (auto j : i.second) {
std::cout << j << " ";
}
std::cout << "\n";
}
Проверено на godbolt .
Кажется, что ваш вывод имеет ключи в обратном порядке, поэтому вы можете использовать rbegin
и rend
с обратными итераторами для итерации по карте.