在c ++

时间:2016-01-30 18:16:07

标签: c++ c++11 vector stl std

我有一个向量,它按排序顺序包含无符号整数。现在我想对从向量的特定位置到其末尾的向量应用二进制搜索。

例如,我的矢量是:

vector<unsigned> vec;
vec.push_back(1); vector.push_back(2), vector.push_back(3); 

vector.push_back(4); 
vector.push_back(5); vector.push_back(6); vector.push_back(7); vector.push_back(8); 
vector.push_back(9); vector.push_back(10); vector.push_back(11); vector.push_back(12);

现在,我想在&#34; vec&#34;上应用二进制搜索。从第6个位置开始到向量的大小,即我想仅对向量进行二分搜索:从pos:6开始到pos:11。

我知道我可以在整个向量上应用std:lower_bound(vec.begin(),vec.end(),9),但我无法理解如何将其应用于部分向量。我想找到&#34; 9&#34;的位置。在矢量vec。我非常感谢您对此的任何帮助

1 个答案:

答案 0 :(得分:5)

std:lower_bound(vec.begin() + 6,vec.end(), 9)

将在从偏移6到结尾的子矢量中搜索。