infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Nitica Isabela din Februarie 13, 2010, 11:41:10



Titlul: Sortare in STL
Scris de: Nitica Isabela din 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.


Titlul: Răspuns: Sortare in STL
Scris de: Iacob Radu din 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 )
...
}

 :)


Titlul: Răspuns: Sortare in STL
Scris de: Dragos-Alin Rotaru din 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;
}


Titlul: Răspuns: Sortare in STL
Scris de: Mircea Dima din 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());