向量搜索与数组搜索的时间成本

时间:2019-03-31 23:51:43

标签: c++

首先,有一些背景知识。 我正在创建一个程序,其中包含主题公园中所有失物招领清单的已分类列表,主要是出于教育目的。从理论上讲,该程序最终可以处理数千(甚至更多)项。

我熟悉使用std::vector而不是数组的清晰/易用的原因。

我的问题:当在此排序列表中搜索特定项目时,是否有任何重要的性能原因,为什么我应该采用数组而不是选择std :: vector呢?

注意:向量将不需要调整大小。它将在程序开始时(从文件开始)进行初始化,并且永远不会直接添加任何项目。

3 个答案:

答案 0 :(得分:2)

首先std::vector(实际上)是动态数组的零成本抽象。向量的大多数功能都是普通的内联函数,这些内联函数会被编译器剥离。因此,使用向量生成的许多代码与使用动态数组生成的代码相同。

第二个标准库的算法部分甚至无法分辨数组和向量之间的区别,因为向量的迭代器像数组一样向下编译为原始指针。

因此,如果您能衡量出任何差异,那我将非常惊讶,因为很可能不会出现任何差异。如果有的话,您总是可以传递向量的内部数组,这当然与使用数组相同。因为它一个数组!

答案 1 :(得分:0)

选择矢量,没有任何妥协。 同样,Scott Meyers撰写了许多最有用的c ++读物,他说: Item 13. Prefer vector and string to dynamically allocated arrays. 阅读整章,您会发现使用向量的许多原因。

答案 2 :(得分:0)

就排序速度而言,数组和向量之间没有显着差异。我也会选择vector。