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


 

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 15417
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13960
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16496
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22048
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23267
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18921
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39245
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174696
1398 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 152328
1397 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 107144
1396 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 83042
1395 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 71936
1394 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 54120
1393 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 50357
1392 Find the O/S Language Type c2design 2014.07.30 47763
1391 RAD Studio Resource Center 박병일 2012.01.26 46451
1390 CD-ROM 열고 닫기 박병일 2011.12.22 44762
1389 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 38535
1388 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 32457
1387 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 29462
1386 델파이XE2 파이어몽키 기반 아이폰앱 개발에서 제스춰를 인식시키는 방법 박병일 2012.01.25 23255
1385 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 22909
1384 SendMessage 함수를 이용한 메세지 전송 관리자 2012.01.05 18255