Kodused ülesanded
1. Andmekogumite ühendamine
Koosta mallifunktsioon yhenda
, mis ühendab kaks andmekogumit. Mallifunktsioonil on kolm malliparameetrit: esimesed kaks määravad ühendatavad andmekogumid ja kolmas määrab andmekogumi, kuhu kaks esimest ühendatakse. Kindlasti kasuta viiteid! Kõik kolm andmekogumit võivad olla erinevad. Mallifunktsioon peab töötama vähemalt kolmel andmekogumil: vector
, list
ja deque
. Näide on koos järgmise ülesandega. Funktsiooni signatuur:
template <typename T1, typename T2, typename T3> void yhenda(T1& alg1, T2& alg2, T3& tulem)
2. Andmekogumi väljundvoogu saatmine
Koosta mallifunktsioon tryki
, mis saadab etteantud andmekogumi elemendid tühikuga eraldatult väljundvoogu. Mallifunktsioonil on järgmine signatuur:
template <typename T> ostream& tryki(T& alg, ostream & os)
Näide 1. ja 2. ülesande kohta
vector<string> c1{"vector", "deque", "queue"}; deque<string> c2{"list", "forward_list", "array"}; list<string> d1; yhenda(c1, c2, d1); tryki(d1, cout); | vector deque queue list forward_list array |
3. Andmekogumite võrdlemine
Koosta mallifunktsioon, mis defineerib üle andmekogumite võrdlemise elementide summa alusel
template <typename T> bool operator<(T& esimene, T& teine)
Näited andmekogumite võrdlemisest
list<int> l1{1, 5, 3, 2, 1, 1, 1}; list<int> l2{3, 5, 3, 9, 9}; cout << boolalpha << (l1 < l2) << '\n'; vector<int> v1{10, 11}; vector<int> v2{3, 5, 3}; cout << boolalpha << (v1 < v2) << '\n'; | true false |