在C ++ Builder 10.4 Sydney for Win32和Win64中使用C ++ 17算法库并行排序

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  Delphi控件源码下载网站

C++ Builder 10.4

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

#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();

	// 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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值