Heim > Backend-Entwicklung > C++ > Hauptteil

Wie entferne ich Duplikate aus einem unsortierten Vektor und behalte dabei gleichzeitig die Reihenfolge mit STL bei?

Patricia Arquette
Freigeben: 2024-11-16 04:32:03
Original
446 Leute haben es durchsucht

How to Remove Duplicates from an Unsorted Vector While Preserving Order Using STL?

Entfernen von Duplikaten aus unsortierten Vektoren unter Beibehaltung der Originalität mithilfe von STL

Problem:
Suchen Sie eine effiziente Lösung, um Duplikate aus einem bestimmten unsortierten Vektor zu entfernen Vektor unter Beibehaltung der ursprünglichen Reihenfolge.

Benutzerdefiniert Ansatz:
Die bereitgestellte Implementierung verwendet einen Satz zur Verfolgung einzigartiger Elemente. Es überprüft iterativ jedes Vektorelement, fügt einem neuen Vektor eindeutige Elemente hinzu und entfernt Duplikate aus dem ursprünglichen Vektor.

STL-Algorithmus-Ansatz:
Eine optimierte Lösung unter Nutzung von STL-Algorithmen wird empfohlen . Verwenden Sie den Algorithmus std::copy_if und definieren Sie ein Prädikat, das verarbeitete Elemente verfolgt. Geben Sie „false“ für bereits verarbeitete Elemente zurück, andernfalls „true“.

Implementieren des Prädikats:
Erstellen Sie eine Struktur namens NotDuplicate mit einer booleschen Operator()-Methode. Dieser Operator verfolgt Elemente durch eine Set-Einfügung. True wird zurückgegeben, wenn die Einfügung erfolgreich ist (was auf ein eindeutiges Element hinweist).

Verwendung von std::copy_if:
Verwenden Sie std::copy_if, um über den Originalvektor zu iterieren und dabei das NotDuplicate anzuwenden Prädikat. Eindeutige Elemente werden in einen neuen Vektor namens „uniqueNumbers“ kopiert. Durch die Referenzierung der NotDuplicate-Instanz innerhalb von std::copy_if werden Nebenwirkungen vermieden. Dieser Algorithmus bietet eine sauberere und effizientere Lösung, ohne dass Duplikate manuell entfernt oder Iteratoren gewartet werden müssen.

Das obige ist der detaillierte Inhalt vonWie entferne ich Duplikate aus einem unsortierten Vektor und behalte dabei gleichzeitig die Reihenfolge mit STL bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage