2009-11-14 12 views
6

Ho un paio di domande su come utilizzare i set di C++ (std :: set)Ottenere unione, intersezione, o la differenza di set in C++

  1. C'è un modo per ottenere l'unione, intersezione, o differenza di due set C++? (È abbastanza semplice scrivere la mia funzione per farlo ma volevo sapere se c'era una funzione incorporata)

  2. I set C++ possono essere utilizzati come chiavi in ​​una mappa?

risposta

16

Utilizzare le funzioni set_difference(), set_union(), set_intersection() e set_symmetric_difference().

Gli insiemi e le mappe supportano qualsiasi tipo di chiave che può essere confrontato. Per impostazione predefinita questo significa che il tipo ha operator<() definito, ma è possibile fornire il proprio comparatore. I set C++ non hanno lo operator<() definito e quindi non possono essere usati come chiavi se non si fornisce il proprio comparatore.

+0

E probabilmente non si vuole fornire il proprio comparatore a meno che non si riesca a trovare un modo per capire quale serie è "meno di" l'altra rapidamente - cioè * senza * leggere tutti i suoi membri, che potrebbero ottenere molto lento per un grande set. – quark

3

Qualsiasi cosa può essere utilizzata come chiave in una mappa purché fornisca una classe o una funzione che possa confrontarle. Here è un esempio.

Problemi correlati