Souvent, il est plus efficace d'utiliser un std::vector
trié au lieu d'un std::set
. Est-ce que quelqu'un connaît une classe de bibliothèque sorted_vector
, qui a essentiellement une interface similaire à std::set
, mais insère des éléments dans le vecteur trié (de sorte qu'il n'y a pas de doublons), utilise la recherche binaire à find
éléments, etc.Y a-t-il une classe sorted_vector, qui supporte insert() etc.?
Je sais que ce n'est pas difficile à écrire, mais probablement préférable de ne pas perdre de temps et d'utiliser une implémentation existante de toute façon. La raison d'utiliser un vecteur trié au lieu d'un ensemble est la suivante: Si vous avez des centaines de milliers de petits ensembles qui ne contiennent chacun qu'une dizaine de membres, il est plus économique de n'utiliser que des vecteurs triés. au lieu.
Pourriez-vous être plus précis sur ce que dans std :: set n'est pas assez efficace? – KillianDS
Si vous avez des centaines de milliers de petits ensembles qui ne contiennent chacun qu'une dizaine de membres, il est préférable de n'utiliser que des vecteurs triés. – Frank
Je ne pense pas qu'il y ait un cours tout fait pour ça.Vous pouvez écrire le vôtre ou utiliser 'lower_bound()' pour l'insertion et 'binary_search()' pour la recherche. – doublep