Maison > développement back-end > C++ > Comment puis-je supprimer efficacement les doublons et trier un vecteur en C ?

Comment puis-je supprimer efficacement les doublons et trier un vecteur en C ?

Susan Sarandon
Libérer: 2024-12-21 19:42:23
original
601 Les gens l'ont consulté

How Can I Efficiently Remove Duplicates and Sort a Vector in 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());
Copier après la connexion

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() );
Copier après la connexion

Conversion de constructeur d'ensemble

set<int> s( vec.begin(), vec.end() );
vec.assign( s.begin(), s.end() );
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal