Аннотация:
Шаблон класса ATLArray, предлагаемый вашему вниманию, — практически полный аналог класса CArray из библиотеки MFC. Так что не ждите подробного описания его методов и переменных, — читайте хэлп по классу CArray в документации вашей Visual Studio и применяйте полученные знания к объектам, произведенным от класса ATLArray. Все методы, их параметры и возвращаемые значения, а также закрытые и открытые переменные класса полностью идентичны.
Полагаясь на свой большой опыт программирования вогу сказать, что использовать STL гораздо выгоднее. Да и надежнее, потому что MFC до сих пор сожержит массу ошибок и нелепостей. Например, в STL сохраняется один и тот же подход при работе со всеми шаблонами, вам не придется ломать голову и рыть документацию чтобы узнать, как очитить контейнер в MFC — DeleteItems, RemoveAll, ResetContent — это все говорит о неряшливости отпрысков дяди Билла. Или, например, попробуйте сделать такой массив: CArray<CComPtr<IUnknown>>. Не получается? И здесь виноват MFC. Я уже не буду говорить о том, что с MFC в Unix вас никто не "пустит".
Ну опять про то, что вкуснее: помидоры или огурцы. При чем здесь Unix? Зачем человеку STL, когда ему нет необходимости выходить за рамки WinAPI+ATL+WTL ? И при чем здесь MFC и Билл Гейтс (он его писал что-ли?). Я уже встречал не один десяток подобных высказываний. Это из серии — мой сотовый телефон лучше, т.к. у него есть встроенный браузер. Ну когда люди поймут, что каждый пишет на том, что ему больше нравится или что больше подходит к той или иной ситуации. Мне, например, создание мпссива CArray<CComPtr<IUnknown>> даже в страшном сне не понадобится, как, возможно, и многим другим. Так что давайте будем терпимы ко всему, что не Вашего цвета, т.к. на STL можно тоже вылить массу грязи.
With Best Regards, Robert Y. Tarasow
RealTimeTech Inc, Multimedia Team
Odissey правильно заметил насчет CString в AtlMisc.h
Рекомендую обращаться к этой реализации и я.
Если уж сильно хочется иметь отдельный .h файл для CString,
то что мешает вычленить его реализацию из AtlMisc.h ?
Ну а ATLArray это просто для тех, кто ностальгирует
по MFC, не больше и не меньше...
Я просто вычленил CArray из MFC :)
(Надеюсь, Билли не обидится)
C COM-приветом, Mi
Хочу заметить, что CString в WTL вельми убогий. Такое ощущение, что его писал практикант. Нет никакого резервирования для последующей конкатенации, т.е каждый раз, как к строке добавляется хотя бы 1 символ, происходит перераспределение памяти, вдобавок само перераспределение всегда выполняется выделением нового блока, копированием строки и затем освобождением старого, хотя даже без резервирования во многих случаях можно было бы сделать realloc и возможно обойтись без копирования старой строки (если за уже выделенным куском памяти нашелся свободный блок). Я мерил скорость работы строк stl, MFC, WTL и это подтвердилось — WTL в разы медленнее. Для себя я написал шаблонную строку с интерфейсом как у CString. Скорость получилась примерно как MFC-ая, но при определенных настройках обгоняет всех :). stl — строки — рулез. Действительно очень быстрые и хорошо работают с памятью. Правда с windows у них отношения холодные.