C++ STL使用入门
作者:网络转载 发布时间:[ 2014/3/10 9:43:18 ] 推荐标签:C++ 编程 STL
1 介绍
我开始接触C++编程是从DOS下的Borland C++开始的。那时他们在新版本3.1中包含了一套模板库用来做collection.那真是个好东东。当我开始使用Visual C++ 2.2的时候,我甚至试图去把Borland公司的collection模板库嵌入到Visual C++中去,但是没有成功。可行的解决方案是切换到微软(Microsoft)的collection上,它是MFC的一部分分。但总是有些问题,其原因如下:
一旦实现部分已经代码写完,很难从一种容器(container)类型切换到另外一种容器。
不同容器的迭代器(Iterators)不一样。
如果你在写一个DLL(动态链接库), 服务程序(service)或者终端应用程序,需要用到容器,你要么动态要么静态链接MFC,这使得你不得不依赖于MFC.
近我开始使用STL,发现它真是太棒了!入门可能稍微难一些,但一旦你开始了,它变得非常容易。本文包含了一些使用STL的入门经验,主要是面向那些希望能快速使用STL又不想了解那些琐碎细节的程序员。
2 规则
Rule 1:
你可以生成STL容器,用来存放对象或者指向对象的指针。
class TMyClass;
typedef list<TMyClass> TMyClassList; // 用于存放对象的list容器
typedef list<TMyClass*> TMyClassPtrList; // 用于存放对象指针的list容器
一般来说,list容器用于存放对象。但是,如果你是需要保存一些机器资源(例如,文件句柄,命名管道、套接字(socket)或者其他类似的资源),那么你需要使用list来保存指向这些对象的指针。
如果容器是保存的对象,则在容器析构的时候会自动清理这些对象。但,如果它保存的是对象的指针,删除指针应该是程序员的责任了。
Rule 2
对需要保存到容器中的对象的类型来说,每个类都必须至少实现拷贝构造函数,好还能重载赋值操作符。
class TMyClass {
private:
public:
TMyClass(..);
// 拷贝构造函数
TMyClass(const TMyClass& obj) { *this = obj; }
// 赋值操作符
TMyClass& operator=(const TMyClass& obj);
};
当你把一个对象的实例插入到容器中,STL会自己重新生成一个此对象的拷贝,因此拷贝构造函数成为必须的了。如果你没有为拷贝构造函数写正确的代码,有可能造成list中对象的某些数据成员没有初始化。
Rule 3:
按照下列方式把一个对象插入到容器中:
TMyClass object;
TMyClassList myList;
TMyClassList::iterator it;
it = myList.insert(myList.end(), object);
TMyClass *pObject = &(*it);
上面的例子显示了如何把一个对象插入容器中,并得到这个在容器中的对象的指针。由于容器将会为这个对象产生一个新的拷贝,原始的那个对象实例不再使用了,因此得到其指针是很有必要的。若你是用list来保存指针,这个操作没有多大必要了,因为原始的指针会被保存到容器中。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11