给定排序向量找到从负到正的转换

Given sorted vector find transition from negative to positive

给定一个已排序的 std::vector<int>,我想使用 C++11-STD 函数找到元素从负向正过渡的索引。

我知道我可以使用二进制搜索来实现它,但我对标准库中是否有任何函数感兴趣,类似于一元find_if,这将有助于此搜索(可能与此有关使用正确的 lambda 表达式)。

你应该找到 0 的 lower_bound:

auto iter = std::lower_bound(vec.begin(), vec.end(), 0);

生成的迭代器将指向您可以插入 0 而不会打乱元素顺序的最早位置。同样,upper_bound 将 return 最右边的此类迭代器。

算法的运行时间是O(logN)