Merge pull request 'relecture' (#8) from relecture into main

Reviewed-on: #8
main
Alexis Drai 2 years ago
commit 01fc4a5a7a

@ -12,6 +12,7 @@ using namespace std;
Personnage *find_half_dead(int hp, list<Personnage *> &liste) Personnage *find_half_dead(int hp, list<Personnage *> &liste)
{ {
// TODO: Essayez d'utilisez un find_if avec une lambda
for (auto character: liste) for (auto character: liste)
{ {
if (character->hp() <= hp) if (character->hp() <= hp)
@ -20,6 +21,7 @@ Personnage *find_half_dead(int hp, list<Personnage *> &liste)
} }
} }
return nullptr; return nullptr;
} }
int main() int main()
@ -70,7 +72,7 @@ int main()
cout << endl; cout << endl;
vanime[2]->parler("I'm third"); vanime[2]->parler("I'm third");
auto kyle = new Personnage("Kyle", 15); auto kyle = new Personnage("Kyle", 15); // TODO: delete kenny at some point! J'ai pas gratté mais regardez Valgrind!
vanime.insert(next(vanime.begin()), kyle); vanime.insert(next(vanime.begin()), kyle);
// same as with the list... // same as with the list...
@ -104,7 +106,7 @@ int main()
cout << endl << "alpha: " << alpha->name() << " omega: " << omega->name() << endl << endl; cout << endl << "alpha: " << alpha->name() << " omega: " << omega->name() << endl << endl;
// delete only element only present in vanime // delete only element only present in vanime
delete kyle; // delete kyle; // Ça pue. Kyle est détruit mais son pointeur doit encore être présent dans la liste!
auto *otherKenny = new Kenny("Kenny", 12); auto *otherKenny = new Kenny("Kenny", 12);
anime.push_back(otherKenny); anime.push_back(otherKenny);
@ -116,22 +118,10 @@ int main()
} }
cout << endl; cout << endl;
auto begin = vanime.begin(); auto found = remove_if(std::begin(vanime), std::end(vanime),
auto end = vanime.end(); [](Personnage *p){return dynamic_cast<Kenny*>(p) != nullptr; }
);
for (auto p = begin; p != end; ++p) vanime.erase(found, std::end(vanime));
{
cout << "typeid(character) == typeid(Kenny): "
<< typeid(*p).name() << "==" << typeid(Kenny).name() << ": "
<< (typeid(*p) == typeid(Kenny))
<< endl << endl;
// FIXME
if (typeid(*p) == typeid(Kenny))
{
vanime.erase(p);
}
}
for (Personnage *character: anime) for (Personnage *character: anime)
{ {
@ -194,14 +184,10 @@ int main()
} }
} }
for (auto character: vanime) auto pv = 3;
{ auto harmed = find_if(std::begin(vanime), std::end(vanime), [pv](auto p){ return p->hp() < pv;});
if (character->hp() < 3) if ( harmed != std::end(vanime) )
{ cout << "found one harmed: " << (*harmed)->name() << "(" << (*harmed) << ")" << endl;
cout << "found one: " << character->name() << "(" << character << ")" << endl;
break;
}
}
auto x = find_half_dead(4, anime); auto x = find_half_dead(4, anime);
if (x != nullptr) if (x != nullptr)

Loading…
Cancel
Save