首先,有一些背景知识。 我正在创建一个程序,其中包含主题公园中所有失物招领清单的已分类列表,主要是出于教育目的。从理论上讲,该程序最终可以处理数千(甚至更多)项。
我熟悉使用std::vector
而不是数组的清晰/易用的原因。
我的问题:当在此排序列表中搜索特定项目时,是否有任何重要的性能原因,为什么我应该采用数组而不是选择std :: vector呢?
注意:向量将不需要调整大小。它将在程序开始时(从文件开始)进行初始化,并且永远不会直接添加任何项目。
答案 0 :(得分:2)
首先std::vector
(实际上)是动态数组的零成本抽象。向量的大多数功能都是普通的内联函数,这些内联函数会被编译器剥离。因此,使用向量生成的许多代码与使用动态数组生成的代码相同。
第二个标准库的算法部分甚至无法分辨数组和向量之间的区别,因为向量的迭代器像数组一样向下编译为原始指针。
因此,如果您能衡量出任何差异,那我将非常惊讶,因为很可能不会出现任何差异。如果有的话,您总是可以传递向量的内部数组,这当然与使用数组相同。因为它是一个数组!
答案 1 :(得分:0)
选择矢量,没有任何妥协。
同样,Scott Meyers撰写了许多最有用的c ++读物,他说:
Item 13. Prefer vector and string to dynamically allocated arrays.
阅读整章,您会发现使用向量的许多原因。
答案 2 :(得分:0)
就排序速度而言,数组和向量之间没有显着差异。我也会选择vector。