
c/c++
llu131313
这个作者很懒,什么都没留下…
展开
-
STL 删除容器中元素的几个特殊问题
<br /> 最近的项目中频繁的使用STL,在对容器做删除元素操作时,经常有人得到一些令人讶异的结果,应该还是对STL的原理不够理解,左右无事,就针对这个问题,稍稍探讨一番,也可令初学者少走弯路,牛人自动跳过~<br /> 总所周知,STL充分体现了将容器与算法分离,以获得强大的灵活性,这是它的优势所在,但同时也付出了相应的代价。<br /> 先来看看下面这段代码<br /> #include <iostream>#include <list>#include <algori原创 2011-05-21 21:23:00 · 477 阅读 · 0 评论 -
C++程序的设计机制1:NVI机制(Non-Virtual Interface )
<br />在C++的程序设计中有一些设计开发的典型机制需要整理讨论,在此抛砖引玉,为自己做积累,请高人也多多指教。<br />1.简介<br />在标准C++库中我们可以看到这样的一个现象:<br />6个公有虚函数,并且都是std::exception::what()和其重载。<br />142个非公有虚函数。<br />这样设计的目的何在呢,为什么“多此一举”的把虚函数设置为非公有呢?<br />这就是NVI机制要求的:将虚函数声明为非公有,而将公有函数都声明为非虚——虚拟和公有选其一。<br />2转载 2011-05-27 00:20:00 · 833 阅读 · 0 评论 -
C++程序的设计机制2:Pimpl机制
<br />1.简介<br />这个机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们一般都会修改私有接口,但是这会导致包含该头文件的所有源文件都要重新编译,这会是个麻烦事儿。Pimpl机制,顾名思义,将实现私有化,力图使得头文件对改变不透明。<br />2.机制分析<br />首先,我们先看看不使用这个机制的一个实现: 1: // MyBase.h 2: class MyBase { 3: public: 4: int转载 2011-06-01 23:58:00 · 994 阅读 · 0 评论