能用STL的不要用MFC集合类
作者:朱金灿
来源:http://www.cnblogs.com/clever101
下午同事问我:“VS2005在调试时怎么看不到MFC容器变量的值呢?”我说:“这个你得问微软,自家的东西都支持不好。用STL吧,必须的。”实际上有论文论证过MFC的容器类在速度、安全方面的质量因素和STL不相上下。最让人诟病的是在调试程序时,观察MFC的容器类变量的时候悲剧了,以CArray为例,有图为证:
CArray<int,int> vec;
vec.Add(1);
vec.Add(2);
vec.Add(3);
VS 2005观察变量如下:
同样效果的代码:
std::vector<int> vec2;
vec2.push_back(1);
vec2.push_back(2);
vec2.push_back(3);
std::vector的变量值可以观察得清清楚楚的:
除了观察变量不方便之外,就跨平台方面STL理所当然做得比MFC的集合类好,另外STL和开源类库结合做得比较好,如boost。我感觉MFC的集合类比STL方便的是和MFC中的序列化类结合得比较好。STL实现序列化可以依靠boost,如果你嫌boost过于庞大,可以参考使用这个库:最便捷、最强大、速度最快的C++序列化框架。