// Занесение объекта в очередь.
template
void queue
{
if(sloc==SIZE) {
cout << "Очередь заполнена.\n";
return;
}
sloc++;
q[sloc] = i;
}
// Извлечение объекта из очереди.
template
QType queue
{
if(rloc == sloc) {
cout << "Очередь пуста.\n";
return 0;
}
rloc++;
return q[rloc];
}
int main()
{
queue
a.qput(10);
a.qput(20);
b.qput(19);
b.qput(1);
cout << a.qget() << " ";
cout << a.qget() << " ";
cout << b.qget() << " ";
cout << b.qget() << "\n";
queue
c.qput(10.12);
c.qput(-20.0);
d.qput(19.99);
d.qput(0.986);
cout << с.qget() << " ";
cout << с.qget() << " ";
cout << d.qget()<< " ";
cout << d.qget() << "\n";
return 0;
}
При выполнении этой программы получаем следующие результаты.
10 20 19 1
10.12 -20 19.99 0.986
В этой программе объявление обобщенного класса подобно объявлению обобщенной функции. Тип данных, хранимых в очереди, обобщен в объявлении класса. Он неизвестен до тех пор, пока не будет объявлен объект класса
queue
queue
Заметьте, как указывается нужный тип данных: он заключается в угловые скобки. Изменяя тип данных при создании объектов класса
queue
Можно также создавать очереди для хранения данных, тип которых создан программистом. Например, предположим, вы используете следующую структуру для хранения информации об адресе.
struct addr {
char name[40];
char street[40];
char city[30];
char state[3];
char zip[12];
};
Тогда для того, чтобы с помощью класса
queue
На примере класса
Шаблонный класс может иметь несколько обобщенных типов данных. Для этого достаточно объявить все нужные типы данных в
/* Здесь используется два обобщенных типа данных в определении класса.
*/
#include
using namespace std;
template
class myclass {
Type1 i;
Type2 j;
public:
myclass(Type1 a, Type2 b) { i = a; j = b; }
void show() { cout << i << ' ' << j << '\n'; }
};
int main()
{
myclass
myclass
ob1.show(); // отображение int- и double-значений
ob2.show(); // отображение значений типа char и char *
return 0;
}
Эта программа генерирует такие результаты.
10 0.23
X Это тест.