C++ 提供了 std::sort,但它是否也提供了高效搜索的功能?
C++ offers std::sort, but does it also offer something to search efficiently?
我有一个实现 operator<
和 operator==
的对象向量。 C++ 提供 std::sort 来有效地对该向量进行排序。
std中是否也有函数可以高效地重复搜索一个向量?
我将对该排序向量进行多次搜索,因此 std::find 似乎不是一个好的选择,因为它只是遍历迭代器直到找到匹配项。
尝试从 #include <algorithm>
std::binary_search
当然有。
例如,查看 lower_bound and upper_bound 函数。
另外 binary_search 可能会有用。
所有这些函数都适用于已排序的输入并且具有对数复杂度。
我有一个实现 operator<
和 operator==
的对象向量。 C++ 提供 std::sort 来有效地对该向量进行排序。
std中是否也有函数可以高效地重复搜索一个向量?
我将对该排序向量进行多次搜索,因此 std::find 似乎不是一个好的选择,因为它只是遍历迭代器直到找到匹配项。
尝试从 #include <algorithm>
std::binary_search
当然有。
例如,查看 lower_bound and upper_bound 函数。
另外 binary_search 可能会有用。
所有这些函数都适用于已排序的输入并且具有对数复杂度。