1.仅有的几个抽象数据类;
2.这里的数组是动态数组,C++中数组在定义的时候就要指定大小,并且不检查数组的上下标,这样会造成数组使用不安全;
3.所以VC++封装数组,比如bit数组,Dword数组,指针数组,Ob(object)数组,String数组等。这些都是动态的数组,防止我们的不必要错误;
4.列表类,MFC封装的列表是双向列表,添加、删除元素快,可以从头、从尾访问,也提供基本的数据类型的链表类;
5.MAP,是一种广义的数组,是映射,数组下标可以是任意的数据类型。有时候用数字、字符串来命名一个对象,用字符串类索引对象。
建议:对于一般的线性的数据类型,使用以上的数组、列表和映射,比如队列、堆栈(永远从头添加、删除元素)。
如果是树形、二叉树就仿造MFC的类的定义方式,而且要提供和CObeject的兼容。
STL的缺点:调试的时候没法看到细节,只能通过遍历来发现问题;
STL编译的速度慢,重载了大量运算符,导致效率低下。所以一般不要去封装指针运算符。
STL对数据的安全性较差。因为不知道使用者会放什么东西进去。
大多数开发程序时,建议自己去定义STL的功能,因为网络的资源丰富。可以参考的东西多。
所以先看以上的数组、列表、映射的能不能满足,不能就用STL,再不能就自己封装。