Получение объединения, пересечения или разницы множеств в C++

StackOverflow https://stackoverflow.com/questions/1736017

Вопрос

У меня есть пара вопросов о том, как использовать наборы C++ (std::set)

  1. Есть ли способ получить объединение, пересечение или разницу двух наборов C++?(Для этого довольно легко написать собственную функцию, но я хотел знать, есть ли для этого встроенная функция)

  2. Можно ли использовать наборы C++ в качестве ключей на карте?

Это было полезно?

Решение

Использовать set_difference(), set_union(), set_intersection() и set_symmetric_difference() функции.

Наборы и карты поддерживают любые типы ключей, которые можно сравнивать.По умолчанию это означает, что тип имеет operator<() определено, но вы можете предоставить свой собственный компаратор.В наборах C++ нет operator<() определены и поэтому не могут использоваться в качестве ключей, если вы не предоставите свой собственный компаратор.

Другие советы

Что касается вашего первого вопроса, взгляните на

В качестве ключа на карте можно использовать что угодно, если вы предоставляете класс или функцию, которая может их сравнивать. Здесь это пример.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top