template <class data_t> class list {
data_t data;
list *next;
public:
list (data_t d);
void add(list *node) { node->next = this; next = 0; }
list *getnext() { return next; }
data_t getdata() { return data; }
};
template <class data_t> list<data_t>::list(data_t d)
{
data = d;
next = 0;
}
void main()
{
list<char> start('a');
list<char> *p, *last;
int i;
// создание списка
last = &start;
for(i=1; i<26; i++) {
p = new list<char> ('a' + i);
p->add(last);
last = p;
}
// вывод списка
p = &start;
while(p) {
cout << p->getdata();
p = p->getnext();
}
cout << endl;
system("pause");
}
2. Виконати програму, яка містить шаблоний клас СТЕК.Дописати методи виведення інфрмації,добавлення та вилучення.
template <class Type>
class stack
{private:
int top;
Type s[10];
publi c:
stack (): top(0)
{}
void push(Type var)
{ top++;
s[top] = var;
}
Type pop();
};
template <class Type>
Type stack<Type>::pop()
{ Type var = s[top];
top--;
return var;
}
void main()
{
stack<int> s1;
stack<float> s2;
s1.push(3);
s1.push(2);
s1.pop();
s2.push(0.5);
}
3. Написати програму, яка містить узагальненій клас (шаблонний клас) черрги. Для зразка дивитисьб ПРИМЕР 2 у теоретичних відомостях
4. Виконати приклад двух родовых типа данных
#include <iostream>
using namespace std;
template <class Type1, class Type2> class myclass
{
Type1 i;
Type2 j;
public:
myclass(Type1 a, Type2 b) { i = a; j = b; }
void show() { cout << i << ' ' << j << '\n'; }
};
void main()
{
myclass<int, double> ob1(10, 0.23);
myclass<char, char *> ob2('X', "Это проверка");
ob1.show(); // вывод значений типа int и double
ob2.show(); // вывод значений типа char и char *
system("pause");
}
ІНДИВІДУАЛЬНІ ЗАВДАННЯ
ЗАВДАННЯ № 1
Створити два об’єкта, які будуть ініціалізуватись функціями ініціалізації через вказівники на ці об’єкти.
Створити простий клас для рядків strtype, котрий містить сам рядок і її довжину. Коли створюється об'єкт strtype, для зберігання рядка виділяється пам'ять, і початкова довжина рядка встановлюється рівною нулю. Коли об'єкт strtype видаляється, ця пам'ять звільняється.
ЗАВДАННЯ № 2
Створіть клас prompt. Для виведення на екран рядка-запрошення включіть в клас конструктор. Крім рядка-запрошення конструктор повинен виконати введення набраного вами цілого. Збережіть це значення в закритой змінної count. При видаленні об'єкта типу prompt повинен бути поданий звуковий сигнал, причому стільки разів, скільки задано корисвач в змінної count.
Застосувати казівник на об'єкт.