首先是一些背景。我正在创建一个程序,其中包含一个排序的列表,其中列出了主题公园内所有失物招领处的物品,主要是为了上学。从理论上讲,这个程序最终可能处理数千个(甚至更多)项目。
我熟悉使用std::vector而不是数组的清晰/易用的原因。
我的问题是:在此排序列表中搜索特定项时,有什么重要的性能原因可以解释为什么我应该使用数组来执行硬路由,而不是选择std::vector吗?
注意:向量将而不是需要调整大小。它将在程序开始时被初始化(从一个文件中),并且从来没有直接添加到它的项目。
发布于 2019-04-01 00:06:49
首先,std::vector实际上是一个动态数组的零成本抽象。向量的大部分函数都是普通的内联函数,被编译器去掉了。因此,许多使用向量生成的代码与使用动态数组生成的代码相同。
其次,标准库中的算法部分甚至无法区分数组和向量之间的区别,因为向量的迭代器向下编译到原始指针,就像数组一样。
所以,如果你能测量出任何差别,我会非常惊讶,因为很可能不会有任何差别。如果有的话,你总是可以传递向量的内部数组,当然,这和使用数组是一样的。因为它是一个数组!
发布于 2019-03-31 23:58:38
去找向量,里面没有真正的妥协。此外,Scott的多个最有用的c++读物的作者说:Item 13. Prefer vector and string to dynamically allocated arrays.阅读了整个章节,你会发现很多使用向量的原因。
发布于 2019-03-31 23:59:12
数组和向量在排序速度上没有显著差异。我也会用向量。
https://stackoverflow.com/questions/55446518
复制相似问题