我们可以使用std::find
on std::set
,但它可能会很慢,因为std::set
它的成员函数std::set::find
通常比std::find
.
std::find
仅适用于其元素可能未排序的容器,std::list
例如?
可以std::find
阻止用户使用它来查找东西std::set
吗?
我们可以使用std::find
on std::set
,但它可能会很慢,因为std::set
它的成员函数std::set::find
通常比std::find
.
std::find
仅适用于其元素可能未排序的容器,std::list
例如?
可以std::find
阻止用户使用它来查找东西std::set
吗?
一般来说,您可以将std::find与所有为您提供输入迭代器的容器一起使用。这是有关std::find及其迭代器要求的信息。
主要问题是有效性。该算法对它所使用的容器的内部表示一无所知。所以std::find只是迭代特定容器的元素。没有办法阻止它处理像std::set这样的容器。而且,这将与STL的设计相矛盾。
作为一般规则,您应该更喜欢容器方法而不是具有相同名称的算法。
无论容器如何,std::find() 在最坏的情况下总是采用O(n),因为在它下面只是进行线性迭代搜索,并比较迭代器指向的值。
因此,它无法利用该容器中的元素是否已排序。
不, std::find
不会阻止用户在std::set
.