QMap —— std::map 两者都是[红黑树算法],但不能互转,因为数据成员实现方式不同。std::map的数据成员用的是std::pair,而QMap用的是自己封装的Node,当然还是[键值]对
QList —— stl没有对应类。QList其实不是链表,是优化过的vector,官方的形容是array list,据说它更类似于boost::ptr_deque,不过我没用过后者。它的存储方式是分配连续的node,每个node的数据成员不大于一个指针大小,所以对于int、char等基础类型,它是直接存储,对于Class、Struct等类型,它是存储对象指针。
QBitArray —— std::bitset 功能相同,实现相似,都是构造一个array,用位操作来存取数据。不同的是,QBitArray数据的基础元素是[unsigned char],而bitset是unsigned long。所以QBitArray可能在空间消耗上会省一点。至于效率上么……得让懂编译的人来解答了,我是觉得,32位cpu上,char的位操作和int的位操作应该是一样的开销。
QSet —— std::set 二者不能互转,实现方式有本质的区别。QSet