infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Lup Vasile din Martie 17, 2014, 18:12:12



Titlul: ceva stl
Scris de: Lup Vasile din Martie 17, 2014, 18:12:12
Buna ziua. Vreau sa imi fac un priority_queue in care elementele sa fie structuri definite de mine(ex: struct elev{ int nota, varsta, clasa, string nume;} ). Cum imi fac un priority_queue din asa ceva? (pe net am gasit asta:
Cod:
 class mycomparison
{
  bool reverse;
public:
  mycomparison(const bool& revparam=false)
    {reverse=revparam;}
  bool operator() (const int& lhs, const int&rhs) const
  {
    if (reverse) return (lhs>rhs);
    else return (lhs<rhs);
  }
};
 typedef std::priority_queue<int,std::vector<int>,mycomparison> mypq_type;
)
Imi puteti explica putin ce inseamna aceste lucruri?
Multumesc.


Titlul: Răspuns: ceva stl
Scris de: George Marcus din Martie 17, 2014, 19:37:40
E prea complicat fata de ce iti trebuie tie.

Cod:
struct elev {
 ...
};

struct comp {
 bool operator() (const elev &a, const elev &b) const {
    // functia returneaza true in cazul in care a < b, altfel false
 }
};

priority_queue<elev,vector<elev>,comp> pq;


Titlul: Răspuns: ceva stl
Scris de: Lup Vasile din Martie 17, 2014, 19:43:54
Mersi muuuuuuuuuuult :D  Imi poti explica putin ce inseamna codul?


Titlul: Răspuns: ceva stl
Scris de: George Marcus din Martie 17, 2014, 21:09:49
E cam complicat de explicat daca nu stii POO. Trebuie sa suprascrii operatorul() pentru clasa comparator. Priority queue-ul va apela operatorul () pentru a determina ordinea elevilor.