2010-11-05 14 views
5

Ho uno std::set<int> che contiene n elementi. E voglio liberarmi degli elementi più grandi di n-k e mantenere i primi (almeno) elementi . Come dovrei farlo? C'è una funzione predefinita per questo?Dividere un set (C++)

risposta

9

A std::set è ordinato.

std::set<int>::const_iterator i = myset.begin(); 
std::advance(i, k); 
myset.erase(i, myset.end()); 
+2

'std :: anticipo (i, k);', no? –

+1

Certo, mi chiedo a cosa stavo pensando. – Benoit

+1

Non dovrebbe essere 'std :: set :: iterator' invece di' std :: set :: const_iterator'? –