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)

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...