24 февраля 2006

Велосипеды

Как часто, однако, делаешь что-либо, а потом понимаешь, что изобретаешь велосипед. Недавно изобрел один такой.

Некие объекты имели контейнеры. Но не контейнеры объектов, а контейнеры указателей. И, как водится, перед удалением этих контейнера в деструкторе был подобный код:
CTableContainer::iterator TableIt;
for (TableIt = Tables.begin();
TableIt != Tables.end();
TableIt++)
{
delete *TableIt;
*TableIt = NULL;
}
Недолго думая, прикрутил к контейнерам (через шаблон) деструктор, который все это делает сам. Получились такие "умные контейнеры указателей" - сами удаляют за собой свои объекты.

И вот только тогда, когда все это реализовал, подумал - ведь не я первый с этой проблемой сталкиваюсь - контейнеры указателей. Раз их в стандартной библиотеке нет, то видимо они долны быть в Boost. Немного полистав документацию Boost, я нашел то, что было нужно - Pointer Container Library.