【发布时间】:2013-09-21 16:54:15
【问题描述】:
我使用 C++ 向量来实现堆栈、队列、堆、优先级队列和有向加权图。在书籍和参考资料中,我看到了这些数据结构的大类,所有这些都可以使用向量来实现。 (使用指针可能更灵活)
我们是否也可以使用向量实现更高级的数据结构?
如果是,为什么 C++ 书籍仍然使用指针解释长类的概念?
是要记住低层次的想法,这样更生动还是让学生具备这种指针的用法?
【问题讨论】:
-
如果您只对 C++ 上下文中的答案感兴趣,请相应地标记您的问题。
-
如果数据结构需要数组对象,则使用向量。如果没有,那就不要。例如,
maps 不能使用向量并符合标准。 -
@AlexChamberlain:我想看看这方面的参考资料。
std::map需要一个分配器来管理它的内存,我不明白为什么vector不能作为一个分配器。 -
我不认为实现基于
vector的分配器在问题的意义上是一种“有效”的方法,因为它是围绕使用vector会导致更简单的主张而构建的代码(而使用分配器的代码和分配器代码一样复杂!)。否则不可能根据vector实现标准容器,例如stack是O(1)用于在前面推送/弹出,而vector不是。因此,如果您将vector“伪装”为stack,它根本不会做它应该做的事情。 -
向量用于包含相同类型的对象。例如,我不能使用向量来包含:字符串名称、整数年龄、浮点率。
标签: c++ data-structures vector