【发布时间】:2010-11-23 19:13:26
【问题描述】:
以前,我曾经使用过CArray 和CMap 等MFC 集合类。一段时间后,我切换到 STL 容器并使用了一段时间。虽然我发现 STL 好多了,但我无法指出它的确切原因。一些推理如:
- 它需要 MFC:不成立,因为我的程序的其他部分使用 MFC
- 它取决于平台:不成立,因为我只在 Windows 上运行我的应用程序。(不需要可移植性)
- 在 C++ 标准中定义:好的,但 MFC 容器仍然可以工作
我能想到的唯一原因是我可以在容器上使用算法。还有什么我在这里遗漏的其他原因 - 是什么让 STL 容器比 MFC 容器更好?
【问题讨论】:
-
您可能想在此问题的标题中添加不关心可移植性的问题。目前,仅标题并不能满足您的某些要求。
-
STL 肯定更好,因为所有答案都表明,但真正让我感到震惊的是,仍然有使用 MFC 容器进行写作的人。诚然,他们主要使用模板容器,但必须在两者之间移动是浪费。为什么 MS 既不弃用它们也不向它们添加迭代器只是它们坐在栅栏上惹恼了其他所有人。
-
@Adrian 因为我们中的一些人必须使用遗留代码,但需要最新的工具。既支持旧的东西,又鼓励新的东西是两全其美的。相信我,如果 MS 确实移除了旧容器,我会更加满意。考虑一个事实,如果您使用的是 MFC,那么您可能首先处理的是“遗留”-ish 应用程序。 :-D
-
@franji1,如果你看看我读到的内容,我也说过:
or add iterators to them。我理解为什么它没有被删除,但是 ppl 应该停止用他们实现新的东西。将迭代器添加到这些容器中也不会花费 MS 太多,以帮助那些使用遗留东西的人以最小的风险编写更好的代码。另外,请在我的上一篇文章中将is just替换为instead of,我必须输入它在我的手机上并自动更正。
标签: c++ mfc stl containers