C++ std::find的优点
使用C++11的C++ std::find的优点,c++,c++11,stl,find,containers,C++,C++11,Stl,Find,Containers,使用C++11的std::find比容器的find方法有什么优势吗 在std::vector(没有find方法)的情况下,std::find是否使用了一些智能算法或简单迭代每个元素的简单方法 在std::map的情况下,似乎需要传递std::pair,这是std::map的值类型。这看起来并不像您通常希望为键或映射元素查找的那样非常有用 其他容器,如std::list或std::set或std::unordered\u set,如何处理 在std::vector(没有find方法)的情况下,
std::find
比容器的find
方法有什么优势吗
- 在
(没有std::vector
方法)的情况下,find
是否使用了一些智能算法或简单迭代每个元素的简单方法std::find
- 在
的情况下,似乎需要传递std::map
,这是std::pair
的std::map
值类型。这看起来并不像您通常希望为键或映射元素查找的那样非常有用
- 其他容器,如
或std::list
或std::set
,如何处理std::unordered\u set
find()
成员函数,因此您不可能使用它
在std::map的情况下,似乎需要传递std::pair,这是std::map的值类型。这看起来并不像您通常希望为键或映射元素查找的那样非常有用
实际上,这里应该使用
find()
member函数,它保证了更好的复杂性(O(logn))
通常,当容器公开与泛型算法同名的成员函数时,这是因为成员函数执行相同的操作,但提供了更好的复杂性保证
其他容器如std::list、std::set或std::unordered\u set呢
就像std::vector
,std::list
不是一个已排序的容器,因此同样的结论也适用
对于
std::set
和std::unordered\u set
,您应该使用find()
成员函数,这保证了更高的复杂性(分别为O(logn)和平均O(1)。您可以在std::map
上使用std::find\u if
,以便仅比较键。但是在这种情况下,出于性能考虑,最好使用find
member函数。但是,如果出于某种原因,您希望按值搜索映射,那么在这种情况下可以使用find_if
。如果存在成员函数,则使用该函数;如果不存在,则使用std::find
。如果您知道std::vector实际已排序,则始终可以使用std::lower_bound()进行二进制搜索。因此,字符串的find()操作复杂度是多少?“实际上,这里应该使用find()成员函数”