2010-11-05 3 views
5

J'ai un std::set<int> qui a n articles. Et je veux me débarrasser de n-k plus gros éléments et garder le premier (le moins) k éléments. Comment dois-je faire? Y a-t-il une fonction prédéfinie pour cela?Diviser un ensemble (C++)

Répondre

9

Un std::set est commandé.

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

'std :: avance (i, k)', sûrement? –

+1

Bien sûr, je me demande à quoi je pensais. – Benoit

+1

Ne devrait pas être 'std :: set :: iterator' au lieu de' std :: set :: const_iterator'? –