Использование мультимножеств в C++

Я понимаю использование наборов в C++, но почему существуют мультимножества? В каких реальных приложениях могут быть полезны мультимножества?

Этот аргумент можно распространить и на неупорядоченные мультимножества, чем же тогда отличается использование вектора и какие преимущества и недостатки оно дает?

1 ответ

Потому что вам не нужно хранить одноэлементные объекты в нескольких наборах. Вы думаете о том, чтобы сохранить что-то вроде строки в мультинаборе. Но он создан не для этого. Вы можете иметь любую структуру, которую хотите, и проводить сравнение с одним элементом в структуре.

Например:

struct PhoneBookEntry
{
    std::string name;
    std::string phoneNumber;
}

В этой наивной записи из "телефонной книги" нет причин создавать в телефонной книге одну запись для каждого имени. Их может быть много. Итак, вы делаетеmultiset из PhoneBookEntry, и вы заставляете компаратор быть name. Таким образом, у вас может быть несколько телефонных номеров с одним и тем же именем.

Теперь вы можете подумать, что для этого больше подходит карта. Но это всего лишь пример. Если у вас есть структура, в которой вам не нужен ключ / значение, но вам нужны свойства поиска набора с несколькими элементами на ключ, вы используете мультимножество.

Другие вопросы по тегам