微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/c/117113.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐