C++ C++;11使用lambda over map时发生编译错误

C++ C++;11使用lambda over map时发生编译错误,c++,c++11,map,lambda,C++,C++11,Map,Lambda,以下代码无法编译的原因: int main() { map<int, int> m = { {1, 2}, {3, 4}}; auto p = std::min(m.begin(), m.end(), [](const map<int, int>::value_type& a, const map<int, int>::value_type& b) { return a.second < b.second;})

以下代码无法编译的原因:

int main() {
  map<int, int> m  = { {1, 2}, {3, 4}};

  auto p = std::min(m.begin(), m.end(), [](const map<int, int>::value_type& a, const map<int, int>::value_type& b)         { return a.second < b.second;});

  std::cout << (p->second) << std::endl;
}
intmain(){
映射m={1,2},{3,4};
auto p=std::min(m.begin(),m.end(),[](常量映射::value_type&a,常量映射::value_type&b){返回a.secondstd::cout second)您想要代替。

您想要代替。

std::min
将值类型作为前两个参数,您将传递迭代器


我猜您要实现的是映射中具有最小
.second
的元素,因此min_元素就是您所需要的。

std::min
将值类型作为前两个参数,您将传递迭代器

我猜你想要实现的是地图中最小的
。秒
,所以min_元素就是你所需要的。

请具体说明“不工作”。它不是编译吗?那么你的错误是什么?它正在运行但正在崩溃吗?再次说明错误是什么?请具体说明“不工作”.它不是编译吗?那么你的错误是什么?它正在运行但正在崩溃吗?再说一遍,错误是什么?
X.cc:11:114: note: main()::<lambda(const value_type&, const value_type&)>
X.cc:11:114: note:   no known conversion for argument 1 from 'const std::_Rb_tree_iterator<std::pair<const int, int> >' to 'const value_type& {aka const std::pair<const int, int>&}'
[](int a, int b){return a<b;}