Ícone do site Embarcadero RAD Studio, Delphi, & C++Builder Blogs

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.

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

[crayon-673fd7b8e1227276777388/]

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

[crayon-673fd7b8e1230435821226/]

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

Sair da versão mobile