2010-11-05 12 views
5

Tengo un std::set<int> que tiene n elementos en él. Y quiero deshacerme de los elementos más grandes n-k y mantener los primeros (menos) k elementos. ¿Cómo debería hacerlo? ¿Hay una función predefinida para esto?Dividir un conjunto (C++)

Respuesta

9

A std::set se ordena.

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

'std :: avance (i, k);', ¿verdad? –

+1

Claro, me pregunto en qué estaba pensando. – Benoit

+1

No debería ser 'std :: set :: iterator' en lugar de' std :: set :: const_iterator'? –