Обычно вы сразу узнаете, что вам нужно: если у вас просто есть bool для аргумента «значение» на карте, вы, вероятно, захотите использовать набор.
Set - это дискретная математическая концепция, которая, по моему опыту, появляется снова и снова в программировании. Класс stl set является относительно эффективным способом отслеживания множеств, где наиболее распространенными операциями являются вставка / удаление / поиск.
Карты используются, когда объекты имеют уникальную идентичность, которая мала по сравнению со всем их набором атрибутов. Например, веб-страница может быть определена как URL-адрес и байтовый поток содержимого. Вы можете поместить этот поток байтов в набор, но процесс двоичного поиска будет очень медленным (так как содержимое намного больше, чем URL), и вы не сможете найти веб-страницу, если ее содержимое изменится. URL - это идентификатор веб-страницы, поэтому он является ключом карты.