Получение объединения, пересечения или разницы множеств в C++
-
20-09-2019 - |
Вопрос
У меня есть пара вопросов о том, как использовать наборы C++ (std::set)
Есть ли способ получить объединение, пересечение или разницу двух наборов C++?(Для этого довольно легко написать собственную функцию, но я хотел знать, есть ли для этого встроенная функция)
Можно ли использовать наборы C++ в качестве ключей на карте?
Решение
Использовать set_difference()
, set_union()
, set_intersection()
и set_symmetric_difference()
функции.
Наборы и карты поддерживают любые типы ключей, которые можно сравнивать.По умолчанию это означает, что тип имеет operator<()
определено, но вы можете предоставить свой собственный компаратор.В наборах C++ нет operator<()
определены и поэтому не могут использоваться в качестве ключей, если вы не предоставите свой собственный компаратор.
Другие советы
Что касается вашего первого вопроса, взгляните на
В качестве ключа на карте можно использовать что угодно, если вы предоставляете класс или функцию, которая может их сравнивать. Здесь это пример.