想要理解关联容器与顺序容器的不同,最关键的是理解其基础的数据结构,这样就很自然的理解它所表现出来的性质。
两类容器的根本差别在于,顺序容器中的元素是“顺序”存储的(链表容器中的元素虽然不是在内存中“连续”存储的,但仍然是按“顺序”存储的)。理解顺序的关键,是理解容器支持的操作形式以及效率。
对vector这样的顺序容器,元素在其中按顺序存储,每个元素都有唯一对应的位置编号,所有的操作都是按编号(位置)进行的。
例如,获取元素(头、尾、用下标获取任意位置)、插入删除元素(头、尾、任意位置)、遍历元素(按元素位置顺序逐一访问)。底层数据结构是数组、链表,简单但已能保证上述操作的高效。而对于依赖值得元素访问,例如查找(搜索)给定值(find),在这种数据结构上的实现是要通过遍历完成,效率不佳。
而map这种关联容器,就是为了高效实现“按值访问元素”这类操作而设计的。为了达到这一目的,容器中的元素是按关键字存储的,关键字值与元素数据建立对应关系,这就是“关联”的含义。底层数据结构是红黑树、哈希表等,可高效实现按关键字值查找、添加、删除元素等操作。
顺序容器与关联容器的不同
最新推荐文章于 2024-08-23 08:10:44 发布