Witam. Niedawno miałem temat związany z wypełnianiem vectora wskaźników, teraz staram się posortować całość metodą sort(). Prosiłbym o pomoc, gdyż mam buga, którego nie mogę zlokalizować. Problem jest w samym algorytmie porównującym mam wrażenie.
#include <iostream>
#include <vector>
#include <string>
#include <time.h>
#include <algorithm>
#include "Zwierz.h"
#include "Pies.h"
#include "Kot.h"
using namespace std;
void f_glos(Zwierz &f)
{
f.daj_glos();
}
void f_roczek(Zwierz &f)
{
f.rok_urodzenia();
}
void f_imi(Zwierz &f)
{
f.imie();
}
bool porownaj(Zwierz &f1,Zwierz &f2)
{
return f1.rok<f2.rok;
}
int main()
{
srand((unsigned int)time(NULL));
vector<Zwierz*> zwierzoki;
Kot k1;
Kot k2;
Kot k3;
Pies p1;
Pies p2;
Pies p3;
zwierzoki.push_back(&k1);
zwierzoki.push_back(&k2);
zwierzoki.push_back(&k3);
zwierzoki.push_back(&p1);
zwierzoki.push_back(&p2);
zwierzoki.push_back(&p3);
f_glos(k1);
f_glos(k2);
f_glos(k3);
f_glos(p1);
f_glos(p2);
f_glos(p3);
f_roczek(k1);
f_roczek(k2);
f_roczek(k3);
f_roczek(p1);
f_roczek(p2);
f_roczek(p3);
f_imi(k1);
f_imi(k2);
f_imi(k3);
f_imi(p1);
f_imi(p2);
f_imi(p3);
cout<<"W vectorze jest: "<<zwierzoki.size()<<" zwierzakow!"<<endl;
cout<<"Daty urodzenia przed posortowaniem: "<<endl;
for(unsigned int i;i<zwierzoki.size();i++)
{
cout<<"Data urodzenia "<<i<<"zwierzaka to: "<<zwierzoki[i]->rok;
}
sort(zwierzoki.begin(),zwierzoki.end(),porownaj);
cout<<"Daty urodzenia po posortowaniu: "<<endl;
for(unsigned int i;i<zwierzoki.size();i++)
{
cout<<"Data urodzenia "<<i<<"zwierzaka to: "<<zwierzoki[i]->rok;
}
cout<<"CZYSZCZENIE VECTORA!!!"<<endl;
zwierzoki.clear();
system("pause");
return 0;
}