Maison >développement back-end >C++ >Comment puis-je supprimer efficacement les doublons et trier un vecteur en C ?
Éliminer efficacement les doublons et trier un vecteur
Lors de la manipulation de grands vecteurs avec des doublons potentiels, il est crucial de trouver une approche efficace pour les supprimer duplique et trie le vecteur. Cet article explore les techniques les plus efficaces pour atteindre cet objectif.
Utilisation de la manipulation de vecteurs
Une option consiste à utiliser une combinaison d'opérations de tri et d'unicité sur le vecteur. Cependant, cette méthode peut s'avérer inefficace en raison de la nécessité de trier l'intégralité du vecteur avant de supprimer les doublons.
vec.erase( std::unique(vec.begin(), vec.end()), vec.end()); std::sort(vec.begin(), vec.end());
Conversion en un ensemble
Une approche alternative consiste à convertir le vecteur en un ensemble à l'aide d'un constructeur ou en insérant manuellement des éléments. Les ensembles éliminent automatiquement les doublons et fournissent une itération triée. Après la conversion, les données peuvent être recopiées dans un vecteur.
Conversion manuelle d'ensemble
set<int> s; unsigned size = vec.size(); for( unsigned i = 0; i < size; ++i ) s.insert( vec[i] ); vec.assign( s.begin(), s.end() );
Conversion de constructeur d'ensemble
set<int> s( vec.begin(), vec.end() ); vec.assign( s.begin(), s.end() );
Comparaison des performances
Lorsque le nombre de doublons est volumineux, la conversion en un ensemble et le transfert des données dans un vecteur deviennent l'option la plus rapide. La conversion manuelle en un ensemble semble également être légèrement plus rapide que l'utilisation du constructeur d'ensemble.
Séquence optimale
Pour des performances optimales, il est recommandé d'éviter de trier le vecteur avant de le supprimer. des doublons. En convertissant en un ensemble puis en transférant les données, les deux tâches peuvent être accomplies efficacement.
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!