首页 > 解决方案 > lower_bound lambda 比较错误

问题描述

试图Comp arglower_boundfunc 中使用 lambda,但没有成功。我想使用带有lower_bound stdfunc 的 lambda。似乎错误的参数会导致错误。下面是重现问题的最小示例。我究竟做错了什么?

#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<pair<int, pair<int, int>>> vertical(2);
    vector<pair<int, pair<int, int>>> horizontal(2);
    for (auto& h : horizontal)
    {
        auto it = std::lower_bound(vertical.begin(), vertical.end(), h,
            [](vector<pair<int, pair<int, int>>>::iterator it, vector<pair<int, pair<int, int>>>::iterator sec) -> bool { return it->first < sec->second.first; });
    }
}

错误

错误 C2664: 'bool main::::operator ()(std::_Vector_iterator>>,std::_Vector_iterator>>) const': 无法将参数 1 从 'std::pair>' 转换为 'std::_Vector_iterator> >' 1> 与 1> [ 1> _Ty=std::pair> 1> ]

标签: c++c++11stl

解决方案


推荐阅读