


Verwendung richtlinienbasierter Datenstrukturen für die Rückwärtszählung
Wir werden den Code im C++-Compiler unter Verwendung von G++-Header-Dateien kompilieren. g++ ist ein Linux-basierter Header zum Kompilieren von Code für richtlinienbasierte Datenstrukturen in C++. Richtlinienbasierte Datenstrukturen sind Strukturen, die für hohe Leistung und Flexibilität in Ihrem Code verwendet werden. Da diese Datenstrukturen sehr umfangreich sind, können wir sie für viele Funktionen verwenden, z. B. zum Durchsuchen des Index nach einem Element, zum Einfügen eines Elements an einer Indexposition, zum Entfernen eines Elements aus einem Indexbereich usw.
Die chinesische Übersetzung vonBeispiel
lautet:Beispiel
Nehmen wir ein Beispiel für das umgekehrte Zählen -
Angenommen, die interne Durchquerung zum Aufbau des Baums ist 1,2,3,4,5. Wenn wir sie umkehren, wird die Form des Baums zu 5,4,3,2,1.
Nehmen wir die folgende Baumstruktur als Eingabe
< 5, 4, 3, 2, 1 >
Die angegebene Länge des Strukturbaums beträgt 4. Nun betrachten wir die folgenden Schritte, um den Prozess der Inversion zu verstehen.
Schritt 1 – Elemente beginnen mit index[0], der 5 ist, und werden mit jedem Element gepaart, bis index [4], der 1 ist. Die Gesamtzahl zwischen Index 0 und 4 beträgt also 4.
(5…4), (5…3), (5…2), (5…1)
Schritt 2 – Elemente beginnen bei index[1], also 4, , und werden mit jedem Element bis index[4], also 1, gepaart. Daher beträgt die Gesamtzahl zwischen den Indizes 1 bis 4 3.
(4…3), (4…2), (4…1)
Schritt 3 – Elemente beginnen mit index[2], der 3 ist, und werden mit jedem Element gepaart, bis index [4], der 1 ist. Die Gesamtzahl zwischen Index 2 und 4 beträgt also 2.
(3…2), (3…1)
Schritt 4 – Elemente beginnen bei index[3], also 2, und werden mit jedem Element bis index[4], also 1, gepaart. Daher beträgt die Gesamtzahl zwischen Index 3 und 4 1.
(2…1)
Auf diese Weise können wir die Umkehrung eines gegebenen Konstruktionsbaums schreiben. Daher beträgt die Gesamtzahl der Umkehrungen von count(4+3+2+1) 10.
In diesem Artikel werden wir richtlinienbasierte Datenstrukturen verwenden, um das Problem der Inversionszählung zu lösen.
Grammatik
Die folgende Syntax wird im Programm verwendet -
vector <data_type> vector_variable_name
Parameter
data_type – Datentyp zur Verwendung für Vektoren.
vector_variable_name – Variablenname zur Verwendung für Vektoren.
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
Parameter
typedef – Dies ist ein reserviertes Schlüsselwort, das in C++-Programmen verwendet wird.
int – Datentyp des eingefügten Array-Elements.
null_type – Dies ist eine Zuordnungsstrategie und wird als Sammlung verwendet. Wenn wir eine Karte erstellen möchten, muss der zweite Parameter der Kartentyp sein.
less
rb_tree_tag – Baumtyp für rot-schwarze Bäume basierend auf Einfügen und Löschen.
tree_order_statistics_node_update − Dies basiert auf der Header-Datei „tree_policy.hpp“, die verschiedene Operationen zum Aktualisieren des Baumcontainers von Knotenvarianten enthält. Daher werden wir die Knoten im Unterbaum im Auge behalten.
pbds – Variablennamen für richtlinienbasierte Datenstrukturen.
order_of_key()
Algorithmus
Wir werden die Header-Dateien iostream und vector verwenden, um das Programm zu starten. Dann werden wir Header-File-Policy-basierte Datenstrukturen (pbds) erwähnen, die auf g++ basieren.
Wir werden den erforderlichen Namespace basierend auf der Datenstruktur gemäß der GNU-Richtlinie verwenden, die „Verwendung des Namespace __gnu_pbds“ lautet. Es wird das Format des Baums gemäß pbds initialisieren, d. h. ‘typedef tree
, rb_tree_tag, tree_order_statistics_node_update> pbds; Durch diese Verwendung behalten wir den Überblick über die Knoten im Unterbaum.Wir definieren eine Funktionsdefinition des doppelt langen Datentyps ‘inversion_Cnt‘, die einen Parameter einer Vektor-Ganzzahl annimmt und die Adresse des Array-Elements speichert.
Wir speichern „0“ in der Variablen „cnt“, um die umgekehrte Zählung der gesamten Paare zu verarbeiten.
Das Objekt mit dem Namen pb wird dann mit einer richtlinienbasierten Variablen ‘pbds‘ initialisiert, um das Einfügen und Sortieren von Array-Elementen zu steuern.
Verwenden Sie nach der Initialisierung der Variablen eine for-Schleife, um die Array-Elemente zu durchlaufen. Dieses Array-Element wird gemäß den folgenden zwei Anweisungen umgekehrt -
cnt += i-pb.order_of_key(arr[i]); – Durch Berechnung von <5,4>,< 等对值来返回第二个参数中的最小值5,3>, <5,2>, <5,1>, <4,3>, <4,2> usw.
pb.insert(arr[i]); – Durch die Verwendung der vordefinierten Funktion insert() fügen wir die Inversion des Array-Elements, also arr[i], hinzu.
Wir starten die Hauptfunktion und deklarieren die Vektor-Array-Eingabe.
Dann verwenden wir die Variable ‘count‘, um die Funktion ‘inversion_Cnt‘ aufzurufen.
Schließlich gibt die Variable ‘count‘ die Gesamtzahl der Inversionen im Array an.
Beispiel
lautet:Beispiel
In diesem Programm verwenden wir strategische Datenstrukturen, um die Umkehrung einer Zahl zu berechnen.
#include#include // *******g++ header file********* #include #include using namespace std; using namespace __gnu_pbds; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; double long inversion_Cnt( vector & arr) { double long cnt = 0; pbds pb; for(int i = 0; i < arr.size(); i++) { cnt += i-pb.order_of_key(arr[i]); pb.insert(arr[i]); // add the array element } return cnt; } int main() { vector arr = {5, 4, 3, 2, 1}; // The inversion of following input array is <5,4>, <5,3>, <5,2>, <5,1>, <4,3>, <4,2>, <4,1>, <3,2>, <3,1>, <2,1> double long count = inversion_Cnt(arr); cout<<"Total number of inversion count using Policy based data structure is : "< Nach dem Login kopieren
输出
Total number of inversion count using Policy based data structure is : 10
结论
我们通过执行基于反转计数的程序来探索 Linux 头文件 (g++) 的概念。众所周知,C++程序用于操作系统,它有一个跟踪器来记录系统的每一个信息。与此程序相同,我们看到子树如何跟踪其每个节点。
Das obige ist der detaillierte Inhalt vonVerwendung richtlinienbasierter Datenstrukturen für die Rückwärtszählung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Bei der Verwendung komplexer Datenstrukturen in Java wird Comparator verwendet, um einen flexiblen Vergleichsmechanismus bereitzustellen. Zu den spezifischen Schritten gehören: Definieren einer Komparatorklasse und Umschreiben der Vergleichsmethode, um die Vergleichslogik zu definieren. Erstellen Sie eine Komparatorinstanz. Verwenden Sie die Methode „Collections.sort“ und übergeben Sie die Sammlungs- und Komparatorinstanzen.

Datenstrukturen und Algorithmen sind die Grundlage der Java-Entwicklung. In diesem Artikel werden die wichtigsten Datenstrukturen (wie Arrays, verknüpfte Listen, Bäume usw.) und Algorithmen (wie Sortier-, Such-, Diagrammalgorithmen usw.) ausführlich untersucht. Diese Strukturen werden anhand praktischer Beispiele veranschaulicht, darunter die Verwendung von Arrays zum Speichern von Bewertungen, verknüpfte Listen zum Verwalten von Einkaufslisten, Stapel zum Implementieren von Rekursionen, Warteschlangen zum Synchronisieren von Threads sowie Bäume und Hash-Tabellen für schnelle Suche und Authentifizierung. Wenn Sie diese Konzepte verstehen, können Sie effizienten und wartbaren Java-Code schreiben.

EXE zu PHP: Eine effektive Strategie zur Funktionserweiterung Mit der Entwicklung des Internets haben immer mehr Anwendungen begonnen, ins Web zu migrieren, um einen breiteren Benutzerzugriff und komfortablere Bedienung zu ermöglichen. Dabei steigt auch sukzessive der Bedarf, ursprünglich als EXE (ausführbare Dateien) ausgeführte Funktionen in PHP-Skripte umzuwandeln. In diesem Artikel wird erläutert, wie EXE in PHP konvertiert wird, um eine Funktionserweiterung zu erreichen, und es werden spezifische Codebeispiele gegeben. Warum EXE in PHP plattformübergreifend konvertieren: PHP ist eine plattformübergreifende Sprache

Der AVL-Baum ist ein ausgewogener binärer Suchbaum, der schnelle und effiziente Datenoperationen gewährleistet. Um ein Gleichgewicht zu erreichen, führt es Links- und Rechtsdrehungen durch und passt Teilbäume an, die das Gleichgewicht verletzen. AVL-Bäume nutzen den Höhenausgleich, um sicherzustellen, dass die Höhe des Baums im Verhältnis zur Anzahl der Knoten immer klein ist, wodurch Suchoperationen mit logarithmischer Zeitkomplexität (O(logn)) erreicht werden und die Effizienz der Datenstruktur auch bei großen Datensätzen erhalten bleibt.

Referenztypen sind ein spezieller Datentyp in der Go-Sprache. Ihre Werte speichern nicht direkt die Daten selbst, sondern die Adresse der gespeicherten Daten. In der Go-Sprache umfassen Referenztypen Slices, Karten, Kanäle und Zeiger. Ein tiefes Verständnis der Referenztypen ist entscheidend für das Verständnis der Speicherverwaltungs- und Datenübertragungsmethoden der Go-Sprache. In diesem Artikel werden spezifische Codebeispiele kombiniert, um die Merkmale und Verwendung von Referenztypen in der Go-Sprache vorzustellen. 1. Slices Slices sind einer der am häufigsten verwendeten Referenztypen in der Go-Sprache.

Inhaltsverzeichnis Astar Dapp Staking-Prinzip Staking-Einnahmen Abbau potenzieller Airdrop-Projekte: AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap Staking-Strategie und -Betrieb „AstarDapp Staking“ wurde zu Beginn dieses Jahres auf die V3-Version aktualisiert, und es wurden viele Anpassungen an den Staking-Einnahmen vorgenommen Regeln. Derzeit ist der erste Absteckzyklus beendet und der Unterzyklus „Abstimmung“ des zweiten Absteckzyklus hat gerade erst begonnen. Um die „zusätzlichen Prämien“-Vorteile zu erhalten, müssen Sie diese kritische Phase (voraussichtlich bis zum 26. Juni dauernd, mit weniger als 5 verbleibenden Tagen) bewältigen. Ich werde die Astar-Einnahmen im Detail aufschlüsseln,

Analyse der MyBatis-Cache-Strategie: Best Practices für First-Level-Cache und Second-Level-Cache Bei der Entwicklung mit MyBatis müssen wir häufig über die Wahl der Cache-Strategie nachdenken. Der Cache in MyBatis ist hauptsächlich in zwei Typen unterteilt: Cache der ersten Ebene und Cache der zweiten Ebene. Der Cache der ersten Ebene ist ein Cache der SqlSession-Ebene, während der Cache der zweiten Ebene ein Cache der Mapper-Ebene ist. In praktischen Anwendungen ist die rationelle Nutzung dieser beiden Caches ein wichtiges Mittel zur Verbesserung der Systemleistung. In diesem Artikel werden spezifische Codebeispiele zur Analyse eines MyBatis verwendet

Überblick über das Java Collection Framework Das Java Collection Framework ist ein wichtiger Teil der Programmiersprache Java. Es stellt eine Reihe von Containerklassenbibliotheken bereit, die Daten speichern und verwalten können. Diese Containerklassenbibliotheken verfügen über unterschiedliche Datenstrukturen, um den Datenspeicher- und -verarbeitungsanforderungen in verschiedenen Szenarien gerecht zu werden. Der Vorteil des Sammlungsframeworks besteht darin, dass es eine einheitliche Schnittstelle bietet, die es Entwicklern ermöglicht, verschiedene Containerklassenbibliotheken auf die gleiche Weise zu betreiben, wodurch die Entwicklungsschwierigkeiten verringert werden. Datenstrukturen des Java-Sammlungsframeworks Das Java-Sammlungsframework enthält eine Vielzahl von Datenstrukturen, von denen jede ihre eigenen einzigartigen Eigenschaften und anwendbaren Szenarien aufweist. Im Folgenden sind einige gängige Datenstrukturen des Java Collection Frameworks aufgeführt: 1. Liste: Liste ist eine geordnete Sammlung, die die Wiederholung von Elementen ermöglicht. Li
