我想在C++的lower_bound上使用lambda。我已經定義了一個結構在lower_bound上使用lambda
struct Mop{
Mop(string n, int a){
name = n;
age = a;
}
string name;
int age;
bool operator < (const Mop&a) const {
return age < a.age;
}
};
,並添加功能
void AddVector(vector<Mop> &a, string n , int aa){
Mop mop(n,aa);
auto it = lower_bound(a.begin(), a.end(), aa , [](const Mop &ar, const Mop &br){ return ar < br;});
a.insert(mop,it);
}
int main()
{
vector<Mop> a;
AddVector(a,"John",15);
AddVector(a,"Swan",10);
return 0;
}
但它保留關於拉姆達拋出錯誤:
error: no matching function for call to 'lower_bound(std::vector<Mop>::iterator, std::vector<Mop>::iterator, int&, AddVector(std::vector<Mop>&, std::string, int)::__lambda0)'
我一直在尋找和lambda語法應corect,爲什麼它會不斷拋出錯誤?我試圖加入
ar.age and br.age
到lambda也沒有工作。
這是什麼錯誤lambda?
您是否包含'algorithm'? – SergeyA
什麼編譯器?一旦你將mop傳遞給lower_bound,並且交換要插入的參數,它就會使用cpp.sh:cpp.sh/3ucf4 wfm我也將lambda拉出到單獨的命名變量中(保持行長度不變)。 –
in'vector :: insert',迭代器先去 –