Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Sortare in STL  (Citit de 2453 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
nitica_isabela
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« : Februarie 13, 2010, 11:41:10 »

Sa zicem ca am o structura:

Cod:
struct muchie
{
  int x, y, cost;
};

muchie a[1000];

vreau sa apelez functia sort din STL sa sorteze dupa cost. Cum fac?

Multumesc anticipat.
Memorat
alexei
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #1 : Februarie 13, 2010, 12:01:52 »

Cod:
#include<algorithm>
using namespace std

...

inline bool cmp( muchie A, muchie B )
{
      return A.cost<B.cost;
}

...

int main()
{
...
sort( a, a+N, cmp ) // unde N este nr de elemente din a[], cmp este functia de comparare a doua elemente din a[] ( evident poti sa adaugi mai multe criterii )
...
}

 Smile
Memorat
mathboy
Moderatori infoarena
Nu mai tace
*****

Karma: 150
Deconectat Deconectat

Mesaje: 259



Vezi Profilul
« Răspunde #2 : Februarie 13, 2010, 12:38:29 »

Ar merge ceva mai rapid daca faci functia cmp astfel:
Cod:
inline bool cmp (const muchie &a, const muchie &b) {
        return a.cost < b.cost;
}
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #3 : Februarie 13, 2010, 13:41:53 »

defapt cel mai ok (si cel mai optim...) e asa:

Cod:

      struct cmp
      {
             bool operator()(const muchie &a, const muchie &b) const
             {
                    return a.cost < b.cost;
              }
      };


si se apeleaza asa:

sort (a, a + N, cmp());
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines