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 |