std::find是否只适用于元素可能未排序的容器?
Is std::find suitable only for containers whose elements may be not sorted?
我们可以在std::set
上使用std::find
,但它可能会很慢,因为std::set
有一个成员函数std::set::find
,它通常比std::find
快.
是否std::find
仅适用于其元素可能未排序的容器,例如std::list
?
可以 std::find
阻止用户使用它在 std::set
上查找内容吗?
一般来说,您可以将 std::find 与所有为您提供 输入迭代器 的容器一起使用。 Here 是关于 std::find 及其迭代器要求的信息。
主要问题是有效性。该算法对其使用的容器的内部表示一无所知。所以 std::find 简单地迭代特定 container.There 的元素是无法阻止它处理像 std::set[= 这样的容器的23=]。而且会与STL.
的设计相矛盾
作为一般规则,您应该更喜欢容器方法而不是同名算法。
不考虑容器,std::find() 在最坏的情况下总是需要 O(n),因为它只是简单地进行线性迭代搜索,并比较迭代器指向的值。
因此它无法利用该容器中的元素是否已排序。
不,std::find
不会阻止用户在 std::set
上找到东西。
我们可以在std::set
上使用std::find
,但它可能会很慢,因为std::set
有一个成员函数std::set::find
,它通常比std::find
快.
是否std::find
仅适用于其元素可能未排序的容器,例如std::list
?
可以 std::find
阻止用户使用它在 std::set
上查找内容吗?
一般来说,您可以将 std::find 与所有为您提供 输入迭代器 的容器一起使用。 Here 是关于 std::find 及其迭代器要求的信息。
主要问题是有效性。该算法对其使用的容器的内部表示一无所知。所以 std::find 简单地迭代特定 container.There 的元素是无法阻止它处理像 std::set[= 这样的容器的23=]。而且会与STL.
的设计相矛盾作为一般规则,您应该更喜欢容器方法而不是同名算法。
不考虑容器,std::find() 在最坏的情况下总是需要 O(n),因为它只是简单地进行线性迭代搜索,并比较迭代器指向的值。
因此它无法利用该容器中的元素是否已排序。
不,std::find
不会阻止用户在 std::set
上找到东西。