C++ 如何在C+中对向量的第二个元素执行下界运算+;?
我们可以复制所有的C++ 如何在C+中对向量的第二个元素执行下界运算+;?,c++,search,vector,C++,Search,Vector,我们可以复制所有的v[i]。第二个元素到一个新向量,然后对新向量执行下限操作,因为我们正在搜索的特定值在两个向量中的位置相同,所以这样做是合理的。但是,如果向量有许多元素,那么复制将是昂贵的 因此,如果可能的话,我想知道对向量类型的容器执行下限操作的语法(特别是仅对向量的第二个元素) int myValue=42;//要搜索的值。 std::下限(myVector.begin()、myVector.end()、myValue、, [](常量对和a、int b){ 返回a.s=myValue,或者
v[i]。第二个元素到一个新向量,然后对新向量执行下限操作,因为我们正在搜索的特定值在两个向量中的位置相同,所以这样做是合理的。但是,如果向量有许多元素,那么复制将是昂贵的
因此,如果可能的话,我想知道对向量
类型的容器执行下限
操作的语法(特别是仅对向量的第二个元素) int myValue=42;//要搜索的值。
std::下限(myVector.begin()、myVector.end()、myValue、,
[](常量对和a、int b){
返回a.s
这假设向量是按元素排序的。第二个
@Evg。现在更正。此下限操作的返回值是多少?我使用了autoit=下限(…)
。但是我不能取消引用it
来打印它所指向的值。它指向第一个元素,其第二个组件是>=myValue
,或者end()
(如果没有)。你如何尝试打印它,以及当你尝试时会发生什么?如果你能展示一个我的第一个想法是(*It)。第二个想法是。它不起作用,并说“错误:调用'(main():)(std::pair&,const int&')不匹配”。对于std::lower_bound
使用的比较函数,第一个参数是序列的元素,第二个参数是您正在搜索的值。这些可能是相同或不同的类型。对于std::sort
,传递给比较的两个参数都是序列的元素,自然是相同类型的。
int myValue = 42; // value to search for.
std::lower_bound(myVector.begin(), myVector.end(), myValue,
[](const pair<int,int>& a, int b) {
return a.second < b;
});