Глава 18. Классы-контейнеры__________ ______________________577

msu.insert(ENROLLMENT::value_type("CS101", STUDENT("Dean Brown", 3.0)));

msu.insert(ENROLLMENT::value_type("CS102", STUDENT("Carl Bishop", 2.0)));

msu.insert(ENROLLMENT::value_type("CS102", STUDENT("Gary Cook", 1.0)));

cout « "Map " « msu.si.ze0 « " students (sorted by name) :" « endl;

for (ENROLLMENT::iterator i = msu.begin(); i != msu.end(); i++) PrintStudent(*i) ;

cout « "Students enrolled in CS101:\n";

for (ENROLLMENT::iterator i = msu.lower_bound("CS101");

((i != msu.upper_bound("CS101")) && (i != msu.endO)); i++)

PrintStudent(*i, false);

return 0;

Далее...

В этой главе мы обсудили две библиотеки классов-контейнеров C++, поставляемых в комплекте Borland C++ 5. BIDS — собственная библиотека фирмы Borland, предлагает традиционный объектно-ориентированный подход с использованием наследования и инкапсуляции в качестве функциональной основы контейнеров. BIDS содержит две категории контейнеров:

контейнеры FDS (Fundamental Data Structures, Фундаментальные структуры данных) — это базовые контейнеры, необходимые для реализации второй категории контейнеров — контейнеров ADT (Abstract Data Types, Абстрактные типы данных).

Новая стандартная библиотека C++, STL (Standard Template Library, Библиотека стандартных шаблонов), демонстрирует совершенно другой подход. Основная функциональность этой библиотеки сосредоточена не в классах-контейнерах, а в глобальных функциях. Функциональный охват, предлагаемый STL, намного шире, чем у BIDS.

• Как BIDS, так и STL широко используют шаблоны, их детальному рассмотрению посвящена следующая глава "Классы-шаблоны".

• Глава 20 "Наследование и полиморфизм" касается многих вопросов, затронутых при рассмотрении BIDS и STL.

• Если у вас при изучении данной главы остались вопросы, связанные с перегрузкой операций, то обратитесь к главе 16 "Перегрузка операций".

• Объекты, определенные пользователем, часто помещаются в контейнеры. BIDS и STL требуют наличия у этих объектов вполне определенных свойств. Многие из этих требований затронуты в главах 16 "Перегрузка операций" и 17 "Конструкторы: копирование и присваивание".