Witam, mam problem z find_if. Wszystko wydaje mi się ok, ale niestety w trakcie kompilacji wywala mi błąd "no operatr "=" matches these operands" ...
kod wygląda następująco
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<string>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
struct Dziecko
{
string nazwisko;
string imie;
int x;
int y;
};
string losuj_imie(string losowe_imie)
{
for (int i = 0; i < 6; ++i)
{
losowe_imie[i] = rand() % ('Z' - 'A') + 'A';
}
return losowe_imie;
}
void wyswietl_liste(vector<Dziecko> Lista)
{
for (int i = 0; i < 5; ++i)
{
cout << Lista[i].nazwisko << " - ";
cout << Lista[i].imie << " - ";
cout << Lista[i].x << " - ";
cout << Lista[i].y << endl;
}
}
float odleglosc(int x, int y)
{
return sqrt(x*x + y*y);
}
bool czy_dalej(Dziecko &a, Dziecko &b)
{
float odl1, odl2;
odl1=odleglosc(a.x, a.y);
odl2 = odleglosc(b.x, b.y);
if (odl1 < odl2)
return true;
else
return false;
}
bool ktore_nazwisko_pierwsze_wg_alfabetu(Dziecko &a, Dziecko &b)
{
if (a.nazwisko<b.nazwisko)
{
return true;
}
else
{
if (a.nazwisko == b.nazwisko)
{
if (a.imie < b.imie)
{
return true;
}
else return false;
}
else return false;
}
//return false;
}
void sortuj_wg_alfabetu(vector<Dziecko> &lista)
{
sort(lista.begin(), lista.end(), ktore_nazwisko_pierwsze_wg_alfabetu);
}
//bool predykat_do_find_if(Dziecko a)
//{
// if (sqrt((a.x)*(a.x) + (a.y)*(a.y)) < 10)
// {
// return true;
// }
// else return false;
//}
Dziecko dzieci_ktore_sa_blizej_niz_10(vector<Dziecko>&ListaDzieci)
{
Dziecko itr;
itr = find_if(ListaDzieci.begin(), ListaDzieci.end(), [](int x){return x < 10; });
return itr;
}
int main()
{
srand(time(NULL));
string imieD=" ";
vector<Dziecko> Lista_dzieci;
Dziecko testowa_zmienna;
for (int i = 0; i < 5; ++i)
{
testowa_zmienna.imie = losuj_imie(imieD);
testowa_zmienna.nazwisko = losuj_imie(imieD);
testowa_zmienna.x = rand() % 20;
testowa_zmienna.y = rand() % 20;
Lista_dzieci.push_back(testowa_zmienna);
}
wyswietl_liste(Lista_dzieci);
sort(Lista_dzieci.begin(), Lista_dzieci.end(), czy_dalej);
cout << endl << "Po Posortowaniu wzgledem odleglosci: " << endl;
wyswietl_liste(Lista_dzieci);
//zadanie a
sortuj_wg_alfabetu(Lista_dzieci);
cout << endl << "Po Posortowaniu wzgledem nazwiska i imienia: " << endl;
wyswietl_liste(Lista_dzieci);
// //zadanie b
// vector<Dziecko> dziecko{};
Dziecko dziecko_ponizej_10;
dziecko_ponizej_10=dzieci_ktore_sa_blizej_niz_10(Lista_dzieci);
system("pause");
}
cały program działa bez problemu, oprócz właśnie funkcji find_if. Ktoś może wie dla czego jest taki błąd? może źle to zwracam?