Vorrei sapere se esiste una libreria std o uno strumento di potenziamento per unire facilmente i contenuti di più set in uno solo.Unisci più elementi di un set in un singolo set
Nel mio caso ho alcuni insiemi di ints che vorrei unire.
Vorrei sapere se esiste una libreria std o uno strumento di potenziamento per unire facilmente i contenuti di più set in uno solo.Unisci più elementi di un set in un singolo set
Nel mio caso ho alcuni insiemi di ints che vorrei unire.
Si può fare qualcosa di simile:
std::set<int> s1;
std::set<int> s2;
// fill your sets
s1.insert(s2.begin(), s2.end());
Sembra che si sta chiedendo std::set_union
.
Nel caso in cui non sia necessario modificare le strutture originali, questa soluzione è la migliore. – freitass
guarda che std :: merge può fare per voi
@MooingDuck Non vedo il problema con l'unione. Unisci fa la stessa cosa dell'unione ma non fa nulla di speciale con duplicati come fa l'unione. E l'inserimento di un duplicato viene gestito dall'insieme stesso. – gsingh2011
Sto cercando di capire la differenza tra inserto per multinsieme e si fondono, nel contesto della fusione. Insert accetta O (logn) per ogni inserto, quindi O (nlogn) in totale; dove n è la dimensione del contenitore più piccolo. Mentre la fusione richiede solo O (n1 + n2). L'unica ragione per cui posso pensare di usare insert è che accetta qualsiasi iteratore e il fatto che la seconda complessità abbia un coefficiente di tre prima di esso. C'è qualche altra forte ragione per favorire l'inserimento dopo l'unione. – sumodds
Non proprio, tranne che, a parità di condizioni, è la soluzione più semplice e generale. –
Questa è una soluzione subottimale. Vedi la risposta di Antonio Pérez. – ManuelSchneid3r