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
Susan Sarandonoriginal
2024-12-21 19:42:23601parcourir

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());

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!

Déclaration:
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