Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
Nouvelles

Utilisation de la bibliothèque d’algorithmes C ++ 17 tri parallèle avec C ++ Builder 10.4 Sydney pour Win32 et Win64

C ++ Builder 10.4 Sydney prend en charge la norme ISO C ++ 17 dans les compilateurs basés sur Clang pour Win32 et Win64 . Une partie de la norme C ++ 17 inclut la  bibliothèque d’algorithmes  qui fournit des stratégies d’exécution pour prendre en charge les opérations parallèles. Vous trouverez ci-dessous un exemple de VCL simple qui utilise le C ++ std :: vector et la politique de tri et d’exécution parallèle de la bibliothèque d’algorithmes pour trier les entiers aléatoires dans le vecteur. Cet exemple se compile actuellement à l’aide des compilateurs de base Clang pour Windows 32 et 64 bits.

Mon formulaire VCL contient un TButton, un TLabel et deux composants TMemo.

pastedimage1597072022306v1-3966634

Le gestionnaire d’événements Button on-click contient le code simple pour créer le vecteur, le trier et afficher les résultats.

#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

Si vous souhaitez inclure du code pour des compilateurs non-Clang et Clang, vous pouvez utiliser les directives de préprocesseur #if, #elif, #else, #endif suivantes dans vos applications.

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

Références C ++ 17 utilisées dans cet exemple simple:

std :: vecteur

Bibliothèque de conteneurs C ++ std :: vector
Défini dans l’en-tête <vector>
https://en.cppreference.com/w/cpp/container/vector

Bibliothèque d’algorithmes

La bibliothèque d’algorithmes ajoute des fonctionnalités au-delà de la bibliothèque C ++ standard. Cette bibliothèque définit des fonctions supplémentaires pour la recherche, l’échantillonnage, le tri, le comptage, la manipulation, la sommation généralisée et plus encore.
Défini dans l’en-tête <algorithm>
https://en.cppreference.com/w/cpp/algorithm

Algorithme de tri
https://en.cppreference.com/w/cpp/algorithm/sort

Politiques d’exécution de l’algorithme
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag

Types de politique d’exécution d’algorithme
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag_t

RAD Studio 13.2 Florence Now Available! Kai 1.1.1 Now Available! What's Coming in RAD Studio 13.2 Florence

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.

Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

IN THE ARTICLES