3

对于每个 stl 容器,在 Visual c++ 中都有一个可用的 MFC 容器。在什么意义上,哪个比另一个更好,你使用什么?

我总是使用 STL 容器是不是错了?

4

8 回答 8

10

由于可移植性,我总是更喜欢 STL 容器。

MFC 容器几乎永远不会在 Linux 上可用。

即使你不打算在 Linux 上使用你的代码……你永远不知道未来会发生什么。

于 2009-05-09T17:34:57.127 回答
10

人们已经指出代码的可移植性是使用 STL 的一个理由,但还有一个更好的理由,也更符合您的个人利益:技能和经验的可移植性。在我看来,当你去寻找你的下一份工作时,在你的简历上有 STL 的经验会给你更多的机会。为什么?STL 实际上是标准 C++ 的一部分,如果我正在招聘,我会假设知道 STL 的人可以相当快地拿起 MFC 容器,但如果我正在寻找具有 STL 技能的人,我不一定会做出相反的假设。

于 2009-05-09T17:56:42.427 回答
5

从来源:

“坦率地说,团队会给你同样的答案。MFC 集合类只是为了向后兼容。C++ 有一个集合类标准,那就是标准 C++ 库。使用任何标准库都没有技术缺陷在 MFC 应用程序中。

我们不打算在这方面做出重大改变。

Ronald Laeremans 代理产品部门经理 Vsual C++ 团队“

于 2009-05-09T19:57:50.840 回答
4

如果您在 MFC 范围内工作,MFC 集合类确实有一些优势。例如,您可以获得序列化(如果您的容器元素继承自 CObject 或类似元素)和一些“免费”的调试支持。MSDN 详细介绍了如何在不同的 MFC 集合类型之间进行选择 [此处]( http://msdn.microsoft.com/en-us/library/y1z022s1(VS.80).aspx)

不过,默认情况下,我会倾向于 STL 类。

于 2009-05-09T19:10:03.717 回答
3

偏爱便携性和自由,而不是私有制。选择 STL 和 Boost (www.boost.org)。

于 2009-05-09T17:57:07.730 回答
2

STL 的。严重地。

于 2009-05-09T17:35:27.360 回答
1

我使用 STL 容器的原因有很多:它们经过了充分的测试、有据可查,并且为全世界的人们所理解。它们也在不断改进:看看 Boost 添加的所有新功能,它们都是向后兼容的。如果您真的想改变主意,请阅读 Alexandrescu 的 Modern C++ Design: Generic Programming and Design Patterns Applied。使用他的许多技术都需要使用 Boost 和 STL。

其他需要考虑的是S TL 是“标准”,但M FC只是“微软”。任何随机的通用 C++ 编码器都可能了解 STL,但只有旧的 Microsoft 编码器会了解 MFC。此外,微软几乎已经放弃了 MFC。

于 2009-05-22T04:21:20.663 回答
-1

即使他们向您显示 MFC 容器更快的数字,也可以无异常并制作免费的双份浓缩咖啡:只需闭上眼睛并使用 DEL 键(也称为 NO-LOCK-IN 键)。

你可以做所有这些,而且更便携,并且以道具解决方案只能梦想的可插入方式。一路STL..

于 2009-05-09T18:21:08.890 回答