zadanie3.pdf

(234 KB) Pobierz
Zadanie 1
A) Zaprojektować i zaimplementować obiekt funkcyjny pozwalający na wygenerowanie
całkowitych liczb pseudolosowych z określonego przedziału [a,b]. Obiekt przetestować z
algorytmem ogolnym generate() i zasobnikiem list<T>.
std::vector<int> vec(10);
std::generate(vec.begin(),vec.end(), Gen(a,b));
std::copy(vec.begin(),vec.end(), std::ostream_iterator<int>(cout," "));
B) Wykonać zadanie korzystając z wyrażeń lambda.
Zadanie 2
A) Zaprojektować, zaimplementować oraz przetestować klasy, ktorych obiekty można użyć jako
funkcje (funktory) pozwalające na umieszczenie struktur opisujących osobę (przez imię,
nazwisko i wiek) w porządku malejącym w: zbiorze (set<T>), gdzie kluczem jest pole
nazwisko:
Osoba t[] = {
{"Kowal", "Mateusz", 22},
{"Abacki", "Grzegorz",20},
{"Nowak", "Jan", 21}
};
std::set<Osoba, wedlugNazwiska> s(t,t+3);
std::copy(s.begin(),s.end(),std::ostream_iterator<Osoba>(std::cout, " "));
B) Obiekty struktury Osoba umieszczone w wektorze (vector<T>) uporządkować rosnąco dla pola
imię, a następnie usunąć te obiekty, ktorych wartość pola wiek jest z przedziału [a,b]
dostarczając odpowiednie obiekty funkcyjne dla std::sort() oraz std::remove if().
std::vector<Osoba> vec(t, t+3);
std::sort(vec.begin(),vec.end(),wedlugNazwiskaMalejaco());
std::copy(vec.begin(),vec.end(),
std::ostream_iterator<Osoba>(std::cout, " "));
std::cout << "\n---------------\n";
vec.erase(std::remove_if(vec.begin(),vec.end(),
czyPrzedzial(20,21)),vec.end());
std::copy(vec.begin(),vec.end(),
std::ostream_iterator<Osoba>(std::cout, " "));
C) Wykonać A i B korzystając z wyrażeń lambda.
Zgłoś jeśli naruszono regulamin