您可以将std::lower_bound
[O(log(N))和std::distance
(O(1)用于随机访问迭代器):
auto lower = std::lower_bound(v.begin(), v.end(), val);
// check that value has been found
const bool found = lower != v.end() && *lower == val;
Run Code Online (Sandbox Code Playgroud)
然后,要么
auto idx = std::distance(v.begin(), lower);
Run Code Online (Sandbox Code Playgroud)
或简单的算术:
auto idx = lower - v.begin();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5014 次 |
最近记录: |