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

Uso de la biblioteca de algoritmos de C ++ 17 Clasificación en paralelo con C ++ Builder 10.4 Sydney para Win32 y Win64

C ++ Builder 10.4 Sydney es compatible con el estándar ISO C ++ 17 en los compiladores basados ​​en Clang para Win32 y Win64 . Parte del estándar C ++ 17 incluye la  biblioteca Algorithms  que proporciona políticas de ejecución para soportar operaciones paralelas. A continuación, encontrará un ejemplo de VCL simple que utiliza C ++ std :: vector y la política de ordenación y ejecución paralela de la biblioteca de algoritmos para ordenar enteros aleatorios en el vector. Este ejemplo se compila actualmente utilizando los compiladores base de Clang para Windows de 32 y 64 bits.

Mi formulario VCL contiene un TButton, TLabel y dos componentes TMemo.

pastedimage1597072022306v1-3966634

El controlador de eventos Button on-click contiene el código simple para crear el vector, ordenarlo y mostrar los resultados.

#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 desea incluir código para compiladores que no sean Clang y Clang, puede usar las siguientes directivas de preprocesador #if, #elif, #else, #endif en sus aplicaciones.

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

Referencias de C ++ 17 utilizadas en este ejemplo simple:

std :: vector

C ++ Containers library std :: vector
Definido en el encabezado <vector>
https://en.cppreference.com/w/cpp/container/vector

Biblioteca de algoritmos

La biblioteca de algoritmos agrega funcionalidad más allá de la biblioteca estándar de C ++. Esta biblioteca define funciones adicionales para buscar, muestrear, clasificar, contar, manipular, sumar generalizado y más.
Definido en el encabezado <algorithm>
https://en.cppreference.com/w/cpp/algorithm

Ordenar algoritmo
https://en.cppreference.com/w/cpp/algorithm/sort

Políticas de ejecución de algoritmos
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag

Tipos de políticas de ejecución de algoritmos
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