矢量搜索与数组搜索的时间成本
Time cost of vector search vs. array search
首先,一些背景。我正在创建一个程序,其中包含主题公园所有失物招领物品的排序列表,主要用于学校教育目的。从理论上讲,该程序最终可能会处理数千(甚至更多(项目。
我熟悉使用std::vector
而不是数组的清晰/易用性原因。
的问题:在此排序列表中搜索特定项目时,是否有任何重要的性能原因导致我应该使用数组而不是选择 std::vector?
注意:不需要调整矢量大小。它将在程序开始时(从文件(初始化,并且永远不会直接向其添加项目。
首先,std::vector
(实际上(是动态数组的零成本抽象。向量的大多数函数都是被编译器剥离的琐碎内联函数。因此,许多使用向量生成的代码与使用动态数组生成的代码相同。
其次,标准库的算法部分甚至无法区分数组和向量,因为向量的迭代器编译为原始指针,就像数组一样。
所以,如果你能衡量任何差异,我会感到非常惊讶,因为很可能不会有任何差异。如果有,您可以随时传递向量的内部数组,当然,这与使用数组相同。因为它是一个数组!
数组和向量在排序速度方面没有显着差异,不是。我也会选择矢量。
去矢量,它没有真正的妥协。此外,Scott Meyers 撰写了多个最有用的 c++ 读物,他说: Item 13. Prefer vector and string to dynamically allocated arrays.
阅读整章,你会发现很多使用向量的原因。
相关文章:
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 超过了三次函数根平分搜索时间限制
- 如果你有一个固定大小的数组,你需要遍历它!n次,使用二进制搜索如何改变时间复杂性
- 有序地图字符串搜索与整数搜索之间的时间复杂度
- 用于搜索的给定代码的时间复杂度是多少
- 矢量搜索与数组搜索的时间成本
- 如何使用二叉搜索计算搜索单词所需的时间
- 是否可以显示需要线性搜索的时间才能找到您在程序中找到的密钥
- 时间在二叉搜索树中返回 0
- 从给定的 IPv6:端口列表中搜索 IPv6:端口组合的最快搜索算法是什么 O(1) 时间一致性
- O(1) 时间平衡二叉搜索时间中的最小/最大元素
- 在 C++ 中搜索unordered_map的时间
- 二进制搜索程序。在应用测试用例时给出正确的输出仍然显示" "超出时间限制" "错误
- 二叉搜索真的是在 0 时钟 CPU 时间内执行的吗?
- 使用 C/C++ 中的二叉搜索在日志文件中搜索日期时间
- 使用C++-AMP来减少未排序向量搜索的运行时间
- 查找所有唯一二叉搜索树的算法的时间复杂度是多少?
- 按创建时间搜索文件
- 线性搜索向量[i]的响应时间为0ms,而向量.at(i)的响应时间为0ms
- 从数据库中搜索时间复杂度为O(1)O(logn)的行