Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++Новости

Использование параллельной сортировки библиотеки алгоритмов C ++ 17 с C ++ Builder 10.4 Sydney для Win32 и Win64

C ++ Builder 10.4 Sydney поддерживает стандарт ISO C ++ 17 в компиляторах на основе Clang для Win32 и Win64 . Часть стандарта C ++ 17 включает  библиотеку алгоритмов,  которая предоставляет политики выполнения для поддержки параллельных операций. Ниже вы найдете простой пример VCL, который использует C ++ std :: vector и политику сортировки библиотеки алгоритмов и параллельного выполнения для сортировки случайных целых чисел в векторе. В настоящее время этот пример компилируется с использованием базовых компиляторов Clang для 32- и 64-битной Windows.

Моя форма VCL содержит компоненты TButton, TLabel и два TMemo.

pastedimage1597072022306v1-3966634

Обработчик событий при нажатии кнопки содержит простой код для создания вектора, его сортировки и отображения результатов.

#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

Если вы хотите включить код для компиляторов, отличных от Clang и Clang, вы можете использовать в своих приложениях следующие директивы препроцессора #if, #elif, #else, #endif..

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

Ссылки на C ++ 17, используемые в этом простом примере:

std :: vector

Библиотека контейнеров C ++ std :: vector
Определена в заголовке <vector>
https://en.cppreference.com/w/cpp/container/vector

Библиотека алгоритмов

Библиотека алгоритмов расширяет функциональность стандартной библиотеки C ++. Эта библиотека определяет дополнительные функции для поиска, выборки, сортировки, подсчета, манипулирования, обобщенного суммирования и многого другого.
Определено в заголовке <algorithm>
https://en.cppreference.com/w/cpp/algorithm

Алгоритм сортировки
https://en.cppreference.com/w/cpp/algorithm/sort

Политики выполнения алгоритма
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag

Типы политик выполнения алгоритмов
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