我想要一个最简单的STL容器可视化

时间:2014-07-15 16:34:39

标签: c++ stl containers

我已经阅读了很多关于STL容器的内容(Sequence ContainersAssociative ContainerContainer adapters),但我还是不了解每个容器的内部形式。

我希望图片支持可视化表单到STL中的每个容器,(例如:容器内的数据形式是什么),如果可能的话。

我希望我的问题清楚。

2 个答案:

答案 0 :(得分:0)

容器的内部工作是独立于实现的,如果性能(Big-O)是正确的,并且容器及其方法的前置条件和后置条件(例如:默认构造=空容器)满足,则执行是标准的。

VS中的例子:
1- T 载体 - 缓冲液(T [],T *)。正常的内部表示是3指针,缓冲区的开始和结束以及当前元素 2- deque of T - 以类似于vector的方式实现,但插入的元素不需要一个接一个,因为容器支持前后插入O(1)通常如果你创建deque它作为所有容器开始为空,假设从后面插入一个值,在这种情况下插入位置0,如果从前面插入一个值插入deque的位置容量(直到两个索引开始和结束相遇,在此需要增长大小写,并且像向量一样复制,并更新值的顺序)。正常的内部表示是指向缓冲区的开始和结束,deque的第一个和最后一个元素的指针 3- T 列表 - 双链表(具有next,previous和T的节点)
4 < T (集合,多集,地图,多图) - 红色黑树,值为T或对,如图所示。正常的内部表示是左右节点和值(用于排序)
5- 无序的T (unordered_set,multiset ...):C ++ 11中的新哈希映射实现。 6- 适配器 - 底层表示是以前的容器之一(例如:stack是默认情况下使用deque实现的适配器),在实例化时,可以更改底层表示以调整性能Big- O根据约束(可能需要随机访问,转发等)。

在任何版本的库中,当建立任何优化时,以及在任何其他情况下,此细节都可以更改。例如,vector的一些实现具有指向begin,capacity(而不是end)和current元素的指针。

答案 1 :(得分:0)

http://www.cs.usfca.edu/~galles/visualization/Algorithms.html

这会有所帮助,尽管基础数据结构可能会因实现而有所不同