Maison >développement back-end >C++ >Comment supprimer les doublons d'un vecteur non trié tout en préservant l'ordre à l'aide de STL ?
Problème :
Trouver une solution efficace pour éliminer les doublons d'un vecteur non trié donné vecteur tout en conservant l'ordre d'origine.
Personnalisé Approche :
L'implémentation fournie utilise un ensemble pour suivre des éléments uniques. Il vérifie de manière itérative chaque élément vectoriel, en ajoutant des éléments uniques à un nouveau vecteur et en supprimant les doublons du vecteur d'origine.
Approche de l'algorithme STL :
Une solution plus rationalisée tirant parti des algorithmes STL est recommandée . Utilisez l'algorithme std::copy_if et définissez un prédicat qui suit les éléments traités. Renvoie false pour les éléments déjà traités et true sinon.
Implémentation du prédicat :
Créez une structure appelée NotDuplicate avec une méthode booléenne Operator(). Cet opérateur suit les éléments via une insertion d'ensemble. True est renvoyé si l'insertion réussit (indiquant un élément unique).
Utilisation de std::copy_if :
Utilisez std::copy_if pour parcourir le vecteur d'origine, en appliquant NotDuplicate prédicat. Les éléments uniques seront copiés dans un nouveau vecteur appelé uniqueNumbers. En référençant l'instance NotDuplicate dans std::copy_if, les effets secondaires sont évités. Cet algorithme fournit une solution plus propre et plus efficace sans qu'il soit nécessaire de supprimer manuellement les doublons ou de maintenir les itérateurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!