前端之家收集整理的这篇文章主要介绍了
c – 给定排序的矢量查找从负到正的过渡,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个排序的std :: vector< int>,我想使用C 11-STD
函数来找到元素从负变为正的索引.
我知道我可以使用二进制搜索来实现它,但我感兴趣的是标准库中是否有任何函数,类似于unaryfind_if,这将有助于此搜索(可能与正确的lambda表达式相关).
你应该找到0的
lower_bound:
auto iter = std::lower_bound(vec.begin(),vec.end(),0);
生成的迭代器将指向最早的位置,您可以在不中断元素排序的情况下插入0.同样,upper_bound将返回最右边的这样的迭代器.
算法的运行时为O(logN)
原文链接:https://www.f2er.com/c/117113.html