能用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++序列化框架

 

 

 

 

 

 

 

posted @ 2011-08-19 21:29  是金子就会灿烂  阅读(2414)  评论(8编辑  收藏  举报