Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++Notícia

Usando C ++ 17 Algorithms Library Classificação paralela com C ++ Builder 10.4 Sydney para Win32 e Win64

C ++ Builder 10.4 Sydney suporta o padrão ISO C ++ 17 nos compiladores baseados em Clang para Win32 e Win64 . Parte do padrão C ++ 17 inclui a  biblioteca de algoritmos  que fornece políticas de execução para suportar operações paralelas. Abaixo você encontrará um exemplo simples de VCL que usa o C ++ std :: vector e a biblioteca de algoritmos sort e política de execução paralela para classificar inteiros aleatórios no vetor. Atualmente, este exemplo é compilado usando os compiladores básicos do Clang para Windows de 32 e 64 bits.

Meu formulário VCL contém um TButton, TLabel e dois componentes TMemo.

pastedimage1597072022306v1-3966634

O manipulador de eventos ao clicar no botão contém o código simples para criar o vetor, classificá-lo e exibir os 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

Se quiser incluir código para compiladores não Clang e Clang, você pode usar as seguintes #if, #elif, #else, #endif diretivas de pré-processador em seus aplicativos

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

Referências C ++ 17 usadas neste exemplo simples:

std :: vector

C ++ Containers library std :: vector
Definido no cabeçalho <vector>
https://en.cppreference.com/w/cpp/container/vector

Biblioteca de algoritmos

A biblioteca de algoritmos adiciona funcionalidade além da biblioteca C ++ padrão. Esta biblioteca define funções adicionais para pesquisa, amostragem, classificação, contagem, manipulação, soma generalizada e muito mais.
Definido no cabeçalho <algorithm>
https://en.cppreference.com/w/cpp/algorithm

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

Políticas de execução de algoritmo
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag

Tipos de política de execução de algoritmo
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