在C ++ Builder 10.4 Sydney for Win32和Win64中使用C ++ 17算法库并行排序
发布日期:2021-05-04 20:44:09 浏览次数:19 分类:精选文章

本文共 1609 字,大约阅读时间需要 5 分钟。

C ++ Builder 10.4 Sydney 在基于Clang的Win32和Win64编译器中支持ISO C ++ 17标准。C ++ 17标准的一部分包括算法库  ,该  库提供执行策略以支持并行操作。在下面,您将找到一个简单的VCL示例,该示例使用C ++ std :: vector以及算法库的sort和parallel执行策略对vector中的随机整数进行排序。本示例当前使用Clang基本编译器针对32和64位Windows进行编译。

我的VCL窗体中包含一个TButton,TLabel和两个TMemo组件。欢迎加入Delphi开发局QQ群:32422310  

C++ Builder 10.4

Button单击事件处理程序包含用于创建向量,对其进行排序并显示结果的简单代码。

#include 
#include
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
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(); // sort the random numbers in the vector std::sort(std::execution::par,my_data.begin(),my_data.end()); // put the sorted vector in Memo2 Label1->Caption = "Sorting Completed"; Label1->Update(); for(int n : my_data) { Memo2->Lines->Add(IntToStr(n)); }}

如果要包括非Clang和Clang编译器的代码,则可以在应用程序中使用以下#if,#elif,#else,#endif预处理程序指令。

#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

 

 

上一篇:Delphi 10.4跨平台可视化快速开发安卓Andriod APP配置SDK/NDK的方法
下一篇:RAD Studio Delphi 10.4中对FireDAC事务隔离配置的更改

发表评论

最新留言

很好
[***.229.124.182]2025年03月21日 18时57分05秒