My VCL form contains a TButton, TLabel and two TMemo components.
The Button on-click event handler contains the simple code to create the vector, sort it and display the results.
#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)); } }
If you want to include code for non-Clang and Clang compilers, you can use the following #if, #elif, #else, #endif preprocessor directives in your applications.
#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 References used in this simple example:
std::vector
C++ Containers library std::vector
Defined in header <vector>
https://en.cppreference.com/w/cpp/container/vector
Algorithms library
The algorithms library adds functionality beyond the standard C++ library. This library defines additional functions for searching, sampling, sorting, counting, manipulating, generalized summing and more.
Defined in header <algorithm>
https://en.cppreference.com/w/cpp/algorithm
Sort algorithm
https://en.cppreference.com/w/cpp/algorithm/sort
Algorithm execution policies
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag
Algorithm execution policy types
https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag_t