У меня есть мультикарта, которая содержит using myMap= std::multimap <std::string, std::string>;
, вот пример данных, которые в нем.
West;Tuulensuu
West;Keskustori
South;Sammonaukio
West;Rautatieasema
West;Tulli
West;Sammonaukio
East;Sammonaukio
Я хотел бы напечатать только значения, но все значения должны быть напечатаны только один раз и должны быть отсортированы.
Я пробовал следующее.
void print_lines(myMap& tramlines)
{
for (auto it = tramlines.begin(); it != tramlines.end(); ) {
std::string key = it->second;
std::cout << it->second << std::endl;
// Advance to next non-duplicate entry.
do {
++it;
} while (it != tramlines.end() && key == it->second);
}
}
Он по-прежнему печатал значения более одного раза. Поэтому я попробовал следующее.
auto uniq = std::unique(tramlines.begin(), tramlines.end());
tramlines.erase(uniq, tramlines.end());
for(auto item : tramlines)
{
std::cout << item.second << std::endl;
}
Но это дает мне следующую ошибку
Severity Code Description Project File Line Suppression State
Error C2679 binary '=': no operator found which takes a right-hand operand of type 'std::pair<const _Kty,_Ty>' (or there is no acceptable conversion) Prog2Test
Какие у меня варианты здесь? Я не могу найти в Интернете ничего, что указывало бы на печать значений, я нашел много для ключей.
Будет ли итерация по значениям и добавление их для установки и печать их хорошей идеей?