Какой из них использовать контейнер c ++ stl или контейнер MFC? - PullRequest
3 голосов
/ 09 мая 2009

Для каждого контейнера stl в Visual C ++ имеется контейнер MFC. Что лучше, чем другой, в каком смысле и что вы используете?

Я всегда использую контейнер STL, это неправильно?

Ответы [ 8 ]

10 голосов
/ 09 мая 2009

Люди указали на переносимость кода как на причину использования STL, но есть и более веская причина, которая больше отвечает вашим личным интересам: переносимость навыков и опыта. По моему мнению, когда вы будете искать свою следующую работу, опыт работы с STL в вашем резюме даст вам больше возможностей. Зачем? По сути, STL является частью стандарта C ++, и если бы я нанимал его, я бы предположил, что тот, кто знает STL, может довольно быстро подобрать контейнеры MFC, но я бы не стал делать противоположное предположение, если бы искал кого-то с навыками STL.

10 голосов
/ 09 мая 2009

Я бы всегда предпочел контейнеры STL из-за портативности.

Контейнеры MFC почти никогда не будут доступны в Linux.

Даже если вы не планируете использовать свой код в Linux ... вы никогда не знаете, что принесет будущее.

5 голосов
/ 09 мая 2009

Из источника:

"И, честно говоря, команда даст вам тот же ответ. Классы коллекций MFC существуют только для обратной совместимости. C ++ имеет стандарт для классов коллекций, и это библиотека стандартов C ++. Технических недостатков для использования любого стандартная библиотека в приложении MFC.

Мы не планируем вносить существенные изменения в эту область.

Рональд Лереманс И.о. руководителя отдела продукции Vsual C ++ Team «

4 голосов
/ 09 мая 2009

Классы сбора MFC имеют некоторые преимущества , если вы работаете в пределах территории MFC. Например. вы получаете такие вещи, как сериализация (если ваши элементы контейнера наследуются от CObject или аналогичные) и некоторая поддержка отладки для «бесплатно». В MSDN есть выбор между различными типами коллекций MFC [здесь] (http://msdn.microsoft.com/en-us/library/y1z022s1(VS.80).aspx).

Хотя по умолчанию я бы склонялся к классам STL.

3 голосов
/ 09 мая 2009

Предпочитают мобильность и свободу проприетаризму. Перейти на STL & Boost (www.boost.org).

2 голосов
/ 09 мая 2009

STL. Серьезно.

1 голос
/ 22 мая 2009

Я использую контейнеры STL по многим причинам: они хорошо протестированы, хорошо документированы и хорошо понятны всем людям. Они также постоянно совершенствуются: посмотрите на все новые функции, добавленные Boost, и все они обратно совместимы. А если вы действительно хотите сойти с ума, прочтите «Современный дизайн C ++» Александреску: применены общие шаблоны программирования и проектирования. Использование Boost и STL требует использования многих его приемов.

Что еще нужно учитывать, это S TL - это " S tandard", но M FC - это только " M icrosoft" , Любой случайный универсальный кодер C ++, вероятно, будет понимать STL, но только старый кодер Microsoft будет знать MFC. Кроме того, Microsoft в значительной степени отказалась от MFC.

0 голосов
/ 09 мая 2009

Даже когда они показывают вам цифры, что контейнеры MFC быстрее, могут быть без исключений и делать двойной эспрессо: просто закройте глаза и используйте клавишу DEL (также известную как NO-LOCK-IN).

Вы можете делать все это и более мобильно и гибкими способами, о которых можно только мечтать. STL полностью ..

...