【发布时间】:2014-03-25 12:31:33
【问题描述】:
已解决
谢谢你。这解决了。这是我使用的解决方案。
std::vector<int> v = {1,2,3,4,8,8,8,8,9,10}
auto p = std::lower_bound(v.begin(),b.end(),8);
int position = p - v.begin();
我想找到一个元素在排序向量中的第一个看到的位置,我想使用 stl 来做到这一点。
示例:v = {1,1,2,6,7,8,8,8,8,9}
int position = my_fun(v.begin(),v.end(),8); // find the position of the first 8
那么位置是5。
看到这是一个排序的向量,我不想使用 find(),因为它每次都会从起点搜索。我想使用 binary_search() --- http://www.cplusplus.com/reference/algorithm/binary_search/,但 binary_search 只会返回 bool。
有什么建议吗?
【问题讨论】:
-
@sflee 您选择的答案无效。 :) 您不能取消引用等于 v.end() 的迭代器。看我的帖子。
-
@VladfromMoscow 我明白你的意思并更新了我的答案。