taming-cpp

Experiments with C++ and comparisons with C
git clone https://git.tronto.net/taming-cpp
Download | Log | Files | Refs | README

sort.cpp (717B)


      1 #include <algorithm>
      2 #include <cstdlib>
      3 #include <ctime>
      4 #include <iostream>
      5 
      6 typedef struct { int a, b; } pair_t;
      7 pair_t a[ARRAYSIZE];
      8 
      9 int main(void) {
     10 	srand(time(NULL));
     11 	for (auto &x : a) {
     12 		x.a = rand() % 1000000;
     13 		x.b = rand() % 1000000;
     14 	}
     15 
     16 	struct timespec begin;
     17 	clock_gettime(CLOCK_MONOTONIC, &begin);
     18 
     19 	std::sort(a, a+ARRAYSIZE,
     20 		[](const pair_t &x, const pair_t &y) {
     21 			int d = x.a - y.a;
     22 			return d < 0 || (d == 0 && x.b > y.b);
     23 		});
     24 
     25 	struct timespec end;
     26 	clock_gettime(CLOCK_MONOTONIC, &end);
     27 	double time = end.tv_sec - begin.tv_sec +
     28 		(end.tv_nsec - begin.tv_nsec) / 1000000000.0;
     29 
     30 	std::cout << "(" << a[ARRAYSIZE/2].a << ") C++ time for " << ARRAYSIZE
     31 		<< " pairs: " << time << "s\n";
     32 }