STL用的人很多,可是很多新手常常误用,造成代码效率的低下。
1 在容器里面直接塞入类对象。
这是最常见的误用,很多人都省事,直接把类对象放入容器,为了能够放入容器,还要给类实现 operator = 和 拷贝构造函数。这个功能,我觉得是C++看似很看,却很误导人的一个用法。从容器里面取对象,加入对象,都会造成频繁的对象拷贝过程。在Java和C#语言里面,为了从根本上杜绝这种现象,是没有对象拷贝过程的,全部用引用对象。因此C#里面的对象始终是要new出来的,绝对不会有operator=这种过程。
在STL里面,直接放类是不可取的,简单的struct对象时可以直接放的。
2 让函数放回string
string对象由于没有引用计数,因此返回的对象也是来回拷贝的。这点就不如MFC,MFC的CString对象,存在引用对象,直接返回CString,不会牵涉到大量的拷贝过程。