не приходилось каждый раз про

Автор admin Пятница, 12 июня 2009 11:32

не приходилось каждый раз программировать заново. Следующая шаблонная функция освобождает указатели в любом последовательном контейнере. Учтите, что в архиве примеров она находится в корневом каталоге (для упрощения доступа): //: :purge.h // Освобождение указателей в последовательных контейнерах STLcontainer fifndef PURGE_H #define PURGE_H #i nclude tempiate void purge(Seq& c) { typename Seq:iterator i; for(i – c.beginO: i != c.endO: ++i) { delete *i: *i – 0: } } // Версия с итераторами: tempiate void purgednplt begin. Inplt end) { while(begin != end) { delete *begin: *begin = 0: ++begi n: } } #endif // PURGE_H ///:- В первой версии purge() ключевое слово typename абсолютно необходимо. Перед нами та самая ситуация, для которой предназначалось это ключевое слово: Seq — аргумент шаблона, a iterator — нечто вложенное в этот шаблон. Что же тогда должна обозначать запись Seq “iterator? Ключевое слово typename указывает, что она обозначает тип и ничего больше. Хотя первая версия purge() ориентирована на контейнеры в стиле STL, вторая версия (с итераторами) работает с любым


Комментарии закрыты.