데이비드 아이가 작성한 글을 번역한 글입니다.


 

C++빌더 10.4 시드니는 ISO C++17 표준을 지원합니다. Win32와 Win64용 Clang 기반 컴파일러에서 사용할 수 있습니다. C++17 표준은 알고리즘 라이브러리를 제공합니다. 이를 통해 실행 정책(Execution Policies)을 활용해 병렬성을 활용할 수 있게 되었습니다. 아래 간단한 VCL 예제를 참고해보세요. C++ std::vector와 알고리즘 라이브러리 정렬, 병렬성 실행 정책을 활용해 벡터에서 임의로 작성된 정수들을 정렬하는 예제입니다. 

 

VCL 폼에 TButton, TLabel, 두개의 TMemo 컴포넌트를 올려놓습니다.

 

 

버튼의 on-click 이벤트 핸들러에 간단한 코드를 작성해보겠습니다.

이 코드는 벡터 생성, 정렬, 결과값을 보여주기 위한 것입니다.

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

 
non-Clnag과 Clang 컴파일러용 코드를 활용하고 싶다면 #if, #eif, #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

 

 
C++17 관련 간단한 예제들
 
std::vector
C++ 컨테이너 라이브러리 std::vector
 
 
알고리즘 라이브러리
 
 
정렬 알고리즘
 
 
알고리즘 실행 정책(Execution Policies)
 
 
알고리즘 실행 정책 타입들
 
 
 
 
 
 

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 7259
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 7081
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 9464
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 14503
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 16253
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 12043
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 31144
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 166971
1261 2020 년 8 월 GM 업데이트 관리자 2020.08.24 419
» C++17 알고리즘 라이브러리 병렬 정렬 사용하기 관리자 2020.08.13 260
1259 [고객 사례- 의료, C++빌더, 모바일, IoT] 브루너 컨설팅, 손목 웨어러블 헬스케어 기기 관리자 2020.08.11 256
1258 [고객 사례- POS, 주문, C++빌더, 멀티플랫폼] BCPOS - 클라우드를 연동한 다양한 간편 결제 지원 POS 관리자 2020.08.04 570
1257 이 달의 기술자료 - 2020년 08월 험프리 2020.07.30 259
1256 [10.4 시드니][패치] RAD스튜디오 10.4 '세 번째 패치(Patch 3)': VCL그리드, C++Win64 디버깅, C++ 안드로이드 예외처리 핸들링 및 리소스 등 관리자 2020.07.29 583
1255 [생산성] RAD 스튜디오, 델파이, C++빌더 단축키 표 file 관리자 2020.07.28 309
1254 [발표자료] VCL 애플리케이션 확장하기 with RAD 서버 관리자 2020.07.22 280
1253 [발표자료] 20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio 관리자 2020.07.22 204
1252 [무료 툴] 델파이 JSON 데이터 자동 연동 프로그램 file 관리자 2020.07.20 641
1251 델파이 개발자 관점에서 본 C++ 빌더 file 김원경 2020.07.20 532
1250 [10.4 시드니][패치] RAD스튜디오 10.4 '두 번째 패치(Patch 2)'를 다운로드 받으세요! 관리자 2020.07.20 815
1249 안드로이드 SDK 수동 설치 방법 file 김원경 2020.07.15 1703
1248 OAuth 2.0 연동 - 네이버 API 연동(네이버 아이디로 로그인) 험프리 2020.07.15 844
1247 RAD Studio의 생산성 툴링 : 탐색기 김원경 2020.07.09 297
1246 RAD Studio의 생산성 툴링 : 북마크 file 김원경 2020.07.09 285
1245 iOS 앱스토어 1024x1024 아이콘 문제에 대한 해결 방법 김원경 2020.07.08 333
1244 [2020년 상반기] 기술자료 TOP 10 - 개발자들이 가장 많이 클릭한 기술자료는? 관리자 2020.07.07 609
1243 이 달의 기술자료 - 2020년 07월 험프리 2020.06.25 393
1242 [발표자료] 20200623 코로나19, 데이터와 RAD로 방역하다! file 관리자 2020.06.24 612