std::find 的优点

2024-04-11

使用 C++11 有什么优势吗std::find超过一个容器的find method?

  • 如果是std::vector(其中没有find方法)确实std::find使用一些智能算法或简单地迭代每个元素的天真的方法?

  • 如果是std::map看来你需要传递一个std::pair, 哪一个是value_type of an std::map。这似乎不是很有用,因为通常您想要查找键或映射元素。

  • 其他容器呢,比如std::list or std::set or std::unordered_set ?


在 std::vector (没有 find 方法)的情况下, std::find 是否使用一些智能算法或简单地迭代每个元素的天真的方法?

它不能,因为向量没有排序。除了复杂度为 O(n) 的线性搜索之外,没有其他方法可以在未排序的向量中查找元素。

另一方面,序列容器不提供find()成员函数,所以你不可能使用它。

在 std::map 的情况下,您似乎需要传递一个 std::pair,它是 std::map 的 value_type。这似乎不是很有用,因为通常您想要查找键或映射元素。

事实上,在这里你应该使用find()成员函数,保证了更好的复杂度(O(log N))。

一般来说,当容器公开一个与泛型算法同名的成员函数时,这是因为该成员函数做同样的事情,但提供了更好的复杂性保证。

其他容器如 std::list 或 std::set 或 std::unordered_set 怎么样?

就像std::vector, std::list不是一个排序的容器 - 所以同样的结论适用。

For std::set and std::unordered_set,相反,您应该使用find()成员函数,保证了更好的复杂度(分别为 O(log n) 和平均 O(1))。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::find 的优点 的相关文章

随机推荐