xmllmx xmllmx - 16 days ago 7
C++ Question

Is std::find suitable only for containers whose elements may be not sorted?

We can use

std::find
on
std::set
, but it may be slow because
std::set
has a member function
std::set::find
that is often faster than
std::find
.

Is
std::find
suitable only for containers whose elements may be not sorted, e.g.
std::list
?

Can
std::find
prevent the user from using it to find something on
std::set
?

Answer

Generally speaking you can use std::find with all the containers which provide you with input iterators. Here is the info about std::find with its iterator requirements.

The main question is effectiveness. The algorithm does not know anything about the inner representation of the container it works with. So std::find simply iterates over the elements of the particular container.There is no way to prevent it from dealing with containers like std::set. Moreover, it will be contradictory to the design of STL.

As a general rule you should prefer container methods to the algorithms with the same name.

Comments