Heim > Backend-Entwicklung > C++ > C++-Programm zum Konvertieren eines Arrays in einen Satz (Hash-Satz)

C++-Programm zum Konvertieren eines Arrays in einen Satz (Hash-Satz)

PHPz
Freigeben: 2023-09-16 09:01:02
nach vorne
758 Leute haben es durchsucht

C++-Programm zum Konvertieren eines Arrays in einen Satz (Hash-Satz)

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.

Fügen Sie Array-Elemente nacheinander in die Sammlung ein

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.

Grammatik

int ip[] = <integer array>;
   unordered_set<int> op;
   for( int i : ip) {
      op.insert(i);
}
Nach dem Login kopieren

Algorithmus

  • Eingabe in Ganzzahl-Array-IP abrufen.
  • Definieren Sie eine unordered_set-Operation.
  • Führen Sie für jedes Element i im Array ip Folgendes aus:
    • IP in op einfügen.
  • Zeige den Inhalt von op.

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

The input array is: 50 80 90 40 30 
The output set is: 30 40 90 50 80
Nach dem Login kopieren

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.

Erstellen Sie eine Sammlung mit dem Bereichskonstruktor

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.

Grammatik

int ip[] = ;
int n = sizeof(ip) / sizeof(ip[0]);
std::unordered_set op(ip, ip + n);
Nach dem Login kopieren

Algorithmus

  • Eingabe in Ganzzahl-Array-IP abrufen.
  • Verwenden Sie den Operator sizeof, um die Größe des Eingabearrays zu bestimmen.
  • Weisen Sie die Größe des Arrays der Ganzzahlvariablen n zu.
  • Konstruieren Sie eine unordered_set-Operation unter Verwendung des Array-Startzeigers und der Array-Größe.
  • Zeige den Inhalt von op.

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

The input array is: 30 20 50 10 70 
The output set is: 70 10 50 20 30
Nach dem Login kopieren

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.

Fazit

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage