Array ist eine in C++ verfügbare Datenstruktur, die eine sequentielle Sammlung von Elementen desselben Typs enthält. Die Größe des Arrays ist fest vorgegeben, kann aber je nach Bedarf erweitert oder verkleinert werden. Es ist wichtig, sich ein Array als eine Sammlung von Variablen desselben Typs vorzustellen, auch wenn es zum Speichern einer Datensammlung verwendet wird. Eine Menge (oder in diesem Fall eine ungeordnete Menge) ist ein Container, der Elemente eines bestimmten Datentyps in einer willkürlichen Reihenfolge speichert. Zur Implementierung von unordered_set wird eine Hash-Tabelle verwendet, bei der die Schlüssel in einen Hash-Tabellenindex gehasht werden, um sicherzustellen, dass Einfügungen immer zufällig erfolgen.
Die Konvertierung von einem Array in eine ungeordnete Menge kann mit verschiedenen Methoden erfolgen, die wir weiter besprechen.
Der einfachste Weg, ein Array in eine ungeordnete Menge umzuwandeln, besteht darin, eine for-Schleife zu verwenden und jedes Array-Element einzeln in die ungeordnete Menge einzufügen. Als nächstes schauen wir uns die Syntax und den Algorithmus an.
int ip[] = <integer array>; unordered_set<int> op; for( int i : ip) { op.insert(i); }
#include <bits/stdc++.h> using namespace std; template <size_t N> unordered_set<int> solve( int (&ip)[N] ) { //an unorderd set is declared unordered_set<int> op; //each element is inserted using insert function for(int i : ip) { op.insert(i); } return op; } int main() { int ip[] = {50, 80, 90, 40, 30}; unordered_set<int> op = solve(ip); //display the input cout<< "The input array is: "; for(int i : ip) { cout<< i << " "; } //display the output cout<< "\nThe output set is: "; for(int j : op) { cout<< j << " "; } return 0; }
The input array is: 50 80 90 40 30 The output set is: 30 40 90 50 80
Wir deklarieren eine ganzzahlige Array-IP und durchlaufen alle Elemente im Array. Wir deklarieren die Ausgabemenge als op und fügen jedes Element mithilfe der im Container verfügbaren Einfügefunktion in die ungeordnete Menge ein. Das Ergebnis, das wir sehen können, ist eine ungeordnete Menge von Werten, die auch im Array vorhanden sind.
Ein unordered_set kann auch mit seinem Bereichskonstruktor erstellt werden. Der Bereichskonstruktor benötigt zwei Eingaben: den Startzeiger des Eingabearrays und die Größe des Eingabearrays plus den Startzeiger.
int ip[] = ; int n = sizeof(ip) / sizeof(ip[0]); std::unordered_set op(ip, ip + n);
#include <bits/stdc++.h> using namespace std; template <size_t N> unordered_set<int> solve(int (&ip)[N]) { //the size is determined of the input array int n = sizeof(ip) / sizeof(ip[0]); //output set is constructed using range constructor std::unordered_set<int> op(ip, ip + n); return op; } int main() { int ip[] = {30, 20, 50, 10, 70}; unordered_set<int> op = solve(ip); //display the input cout<< "The input array is: "; for(int i : ip) { cout<< i << " "; } //display the output cout<< "\nThe output set is: "; for(int j : op) { cout<< j << " "; } return 0; }
The input array is: 30 20 50 10 70 The output set is: 70 10 50 20 30
In diesem Beispiel müssen wir die Größe des Arrays mithilfe der Funktion sizeof bestimmen. uns Weisen Sie der Variablen n eine Größe zu und erstellen Sie unordered_set mit den Zeigern ip und ip + n arbeiten.
unordered_set kann jede Art von Daten enthalten. Um den darin enthaltenen Datentyp zu ändern, müssen wir den in enthaltenen Datentyp ändern. Der Container unterstützt primitive und benutzerdefinierte Typen gut. In der Praxis funktioniert unordered_set recht gut und bietet im Allgemeinen Suchvorgänge mit konstanter Zeitdauer. Alle Operationen auf unordered_set benötigen normalerweise die konstante Zeit O(1), obwohl sie im schlimmsten Fall je nach interner Hash-Funktion bis zur linearen Zeit O(n) dauern können.
Das obige ist der detaillierte Inhalt vonC++-Programm zum Konvertieren eines Arrays in einen Satz (Hash-Satz). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!