C++ – Vector et Range pour trier un tableau

Je partage l’exercice classique du tri du tableau d’entier, que je me suis farci pour comprendre les range en C++, que je n’avais jamais utilisé. Il y a probablement de meilleures façons de faire, mais celle ci-dessous permet de jouer avec quelques notions intéressantes.

#include <iostream>
#include <vector>
#include <limits>

#define DECROISSANT

int main() {
    std::vector<int> ar = {845, 65,84,32,19,85,67,45,12,1,35};

#ifdef DECROISSANT
    std::vector<int> ar_ordered = {std::numeric_limits<int>::min()};
#else
    std::vector<int> ar_ordered = {std::numeric_limits<int>::max()};
#endif

    for(std::vector<int>::reverse_iterator i=ar.rbegin(); i!=ar.rend(); i++) {
        for(std::vector<int>::iterator j=ar_ordered.begin(); j!=ar_ordered.end(); j++) {
#ifdef DECROISSANT
            if( *i > *j ) {
#else
            if( *i < *j ) {
#endif
                ar_ordered.insert(j, *i);
                break;
            }
        }
    }

    ar_ordered.pop_back();

    for(const int& i: ar_ordered) {
        std::cout << i << std::endl;
    }

    return 0;
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *