Website-Icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Paralleles Sortieren mit der C++17-Algorithmenbibliothek mit C++Builder 10.4 Sydney für Win32 und Win64

C ++ Builder 10.4 Sydney unterstützt den ISO C ++ 17-Standard in den Clang-basierten Compilern für Win32 und Win64 . Ein Teil des C ++ 17-Standards enthält die  Algorithmenbibliothek  , die Ausführungsrichtlinien zur Unterstützung paralleler Operationen bereitstellt. Im Folgenden finden Sie ein einfaches VCL-Beispiel, das den C ++ std :: vector und die Richtlinie zum Sortieren und parallelen Ausführen der Algorithmusbibliothek verwendet, um zufällige Ganzzahlen im Vektor zu sortieren. Dieses Beispiel wird derzeit mit den Clang-Basis-Compilern für 32- und 64-Bit-Windows kompiliert.

Mein VCL-Formular enthält einen TButton, TLabel und zwei TMemo-Komponenten.

Die Ereignisbehandlungsroutine für Schaltflächen beim Klicken enthält den einfachen Code zum Erstellen, Sortieren und Anzeigen der Ergebnisse des Vektors.

#include <algorithm>

#include <vector>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
const int max_data = 1000; // number of random numbers to create
Memo1->Lines->Clear();
Memo2->Lines->Clear();
Label1->Caption = Building Random Data;
Label1->Update();
// fill the vector with random numbers and save them in Memo1
std::vector<int> my_data;
for (int i = 1; i <= max_data; i++) {
int random_value = Random(max_data);
my_data.push_back(random_value);
Memo1->Lines->Add(IntToStr(random_value));
}
Label1->Caption = Sorting Random Data;
Label1->Update();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[crayon-6763dd191cfb7177553851/]

Wenn Sie Code für Nicht-Clang- und Clang-Compiler einfügen möchten, können Sie die folgenden Präprozessor-Direktiven #if, #elif, #else, #endif in Ihre Anwendungen verwenden

Fullscreen

 

#if defined(__clang__)
#if (__clang_major__ == 5 && __clang_minor__ == 0)
#warning clang major = 5 and clang minor = 0
#elif (__clang_major__ == 3 && __clang_minor__ == 3)
#warning clang major = 3 and clang minor = 3
#else
#warning Unable to determine correct clang header version
#endif
#else
#warning not a clang compiler
#endif
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[crayon-6763dd191cfbe516722719/]

C ++ 17 In diesem einfachen Beispiel verwendete Referenzen:

std :: vector

C ++ Containers Bibliothek std :: vector
Definiert im Header <vector>
https://en.cppreference.com/w/cpp/container/vector

Algorithmusbibliothek

Die Algorithmenbibliothek bietet Funktionen, die über die Standard-C ++ – Bibliothek hinausgehen. Diese Bibliothek definiert zusätzliche Funktionen zum Suchen, Abtasten, Sortieren, Zählen, Bearbeiten, allgemeinen Summieren und mehr.
Definiert im Header <Algorithmus>
https://en.cppreference.com/w/cpp/algorithm

Sortieralgorithmus
https://en.cppreference.com/w/cpp/algorithm/sort

Richtlinien zur Ausführung von Algorithmen
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag

Richtlinientypen für die Algorithmusausführung
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag_t

Die mobile Version verlassen