Использование контейнеров
Использование контейнеров с шаблонами позволяет вам построить приложение на основе стека (например, используя в качестве
соответствующих структур вектора), что позволяет легко изменить
реализацию связанного списка. Часто для этого требуется только
изменить typedef. Например:
// создать стек целых чисел, загрузить его и вывести содер-
// жимое
#include <classlib\stacks.h>
#include <iostream.h>
// описание контейнерных типов
typedef TStackAsVector<int> IntStack;
int main()
{
IntStack intStack;
for ( int i = 0; i < 10; i++ )
intStack.Push( i );
for ( i = 0; i < 10; i++ )
cout << intStack.Pop() << " ";
cout << endl;
return(0);
}
Вывод будет следующим:
9 8 7 6 5 4 3 2 1 0
Таким образом реализуется стек значений int, а в качестве
соответствующей FDS используется вектор. Если стек нужно реализовать с помощью списка, вы можете заменить typedef:
typedef TStackAsList<int> IntStack;
Все остальное будет работать правильно. Однако, чтобы изменить это на косвенный контейнер, потребуется больше изменений:
// создать стек целочисленных указателей, загрузить стек и
// вывести содержимое
#include <classlib\stacks.h>
#include<iostream.h>
// изменить typedef как обычно
typedef TStackAsVector<int> IntStack;
int main()
{
IntStack intStack;
for ( int i = 0; i < 10; i++ )
intStack.Push( &i ); // воспринимает указатель
for ( i = 0; i < 10; i++ )
cout << *intStack.Pop() << " ";
cout << endl;
return(0);
}
Результат будет тот же.