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

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

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

  2. Наборы C++ могут использоваться в качестве ключей в карте?

7
задан timrau 15 August 2012 в 00:06
поделиться

3 ответа

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

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

16
ответ дан 6 December 2019 в 06:24
поделиться

Что касается вашего первого вопроса, посмотрите

9
ответ дан 6 December 2019 в 06:24
поделиться

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

3
ответ дан 6 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: