第一个元素的索引>使用 STL:: 算法转换为向量中的数字?
我有一个排序的 std::vector
(并且所有值都不同)。
严格查找 myvector 的第一个索引 size_t idx
(不是迭代器)的值的最短方法是什么?至MAX_UI32 = 4294967295U
。
例如:
[1, 34, 83495, 4294967295, 4294967296, 104000000000] -> idx = 4
[1, 34, 83495, 923834, 912834823, 4294967295] -> idx = 6 (= size of myvector)
如何通过一行代码实现这一点?
非常感谢。
I have a sorted std::vector<unsigned long long int> myvector
(and all values are different).
What is the shortest way to find the value of the first index size_t idx
(not an iterator) of myvector strictly > to MAX_UI32 = 4294967295U
.
For example :
[1, 34, 83495, 4294967295, 4294967296, 104000000000] -> idx = 4
[1, 34, 83495, 923834, 912834823, 4294967295] -> idx = 6 (= size of myvector)
How to achieve this in one line of code ?
Thank you very much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
upper_bound
和distance
应该可以解决问题:如果没有这样的元素,
upper_bound
返回v.end()
,因此您的结果将等于v.size()
。A combination of
upper_bound
anddistance
should do the trick:If there is no such element,
upper_bound
returnsv.end()
, so your result will equalv.size()
.在
算法
中使用upper_bound
。请参阅:http://www.cplusplus.com/reference/algorithm/upper_bound/Use
upper_bound
inalgorithm
. See: http://www.cplusplus.com/reference/algorithm/upper_bound/只是补充一下,您可以使用 std::find_if 但在这种情况下您需要编写谓词函数:
Just to add that you can use and std::find_if but in that case you need to write a predicate function: