IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

sort() dans un tableau 2D


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut sort() dans un tableau 2D
    Bonsoir,

    Je voudrais savoir s'il est possible d'utiliser sort() sur un tableau 2D.

    Mon problème c'est que j'ai un tableau : T[X][Y] et que j'aimerais trier suivant les Y et suivant X en cas de Y de même valeur.

    Pour le moment je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    int indexDuMin()
    {
        int Min=0;
        for (int j=0;j<N;j++)
        {
            if (T[j][1]<T[Min][1])
                Min=j;
            if (T[j][1]==T[Min][1])
                if (T[j][0]<T[Min][0])
                    Min=j;
        }
        return Min;
    }
     
    void extraitMin()
    {
       int DuMin = indexDuMin();
       cout << T[DuMin][0] << " " <<T[DuMin][1] << endl;
       T[DuMin][0] = T[N - 1][0];
       T[DuMin][1] = T[N - 1][1];
       N--;
    }
    C'est un peu lourd je trouve...

    merci !

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Soir'

    Le comparateur (3ème argument) de std::sort ne suffit pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::sort(begin(T), end(T), [](auto const & a, auto const & b){
      if (a[1] < b[1]) 
        return true;
      return a[1] == b[1] && a[0] < b[0];
    });
    Après, je me demande la pertinence d'un tableau à 2 valeurs... des coordonnées ? Pourquoi ne pas faire une petite classe pour les représentées ?
    (il y aura un problème d'affectation si se sont des tableaux style C. À remplacer par -comme dit juste au-dessus- une structure dédié ou std::array / std::pair / etc)

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    je t'invite à regarder les entrées sur les matrices de la faq: pourquoi ne pas utiliser [][] et comment bien faire

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Réponses: 4
    Dernier message: 19/02/2008, 13h46
  3. J'ai un TH dans mon tableau et j'aimerais faire en sorte qu'
    Par hstlaurent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 12/09/2005, 17h41
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo