Четвертый BORLAND С++ и его окружение

       

Использование контейнеров


Использование контейнеров с шаблонами позволяет вам построить приложение на основе стека (например, используя в качестве

соответствующих структур вектора), что позволяет легко изменить

реализацию связанного списка. Часто для этого требуется только

изменить 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);

}

Результат будет тот же.



Содержание раздела