Использование мультимножеств в C++
Я понимаю использование наборов в C++, но почему существуют мультимножества? В каких реальных приложениях могут быть полезны мультимножества?
Этот аргумент можно распространить и на неупорядоченные мультимножества, чем же тогда отличается использование вектора и какие преимущества и недостатки оно дает?
1 ответ
Потому что вам не нужно хранить одноэлементные объекты в нескольких наборах. Вы думаете о том, чтобы сохранить что-то вроде строки в мультинаборе. Но он создан не для этого. Вы можете иметь любую структуру, которую хотите, и проводить сравнение с одним элементом в структуре.
Например:
struct PhoneBookEntry
{
std::string name;
std::string phoneNumber;
}
В этой наивной записи из "телефонной книги" нет причин создавать в телефонной книге одну запись для каждого имени. Их может быть много. Итак, вы делаетеmultiset
из PhoneBookEntry
, и вы заставляете компаратор быть name
. Таким образом, у вас может быть несколько телефонных номеров с одним и тем же именем.
Теперь вы можете подумать, что для этого больше подходит карта. Но это всего лишь пример. Если у вас есть структура, в которой вам не нужен ключ / значение, но вам нужны свойства поиска набора с несколькими элементами на ключ, вы используете мультимножество.