比较std :: pair<> first_range中的第一个和最后一个

时间:2018-02-20 04:50:20

标签: c++11 std-pair equal-range

在地图(模板)的上下文中,用于以下用途

auto begin = m_map.find(keyBegin);
auto end = m_map.find(keyEnd);

auto p = equal_range(begin,end,val);

        if( !
        (
            p.first == p.second == m_map.end()
        )
  )
{
  //do something
}

keyBeginkeyEnd的类型是unsigned int。

我收到以下编译错误:

    error: invalid operands to binary expression 

    ('int' and 'iterator' (aka '__map_iterator<__tree_iterator<std::__1::
    __value_type<unsigned int, char>, std::__1::__tree_node<std::__1::__value_type
<unsigned int, char>, 
    void *> *, long> >'))

    p.first == p.second == m_map.end()

有人可以指出这个错误的原因吗?我理解std :: pair&lt;&gt;由std :: equal_range&lt;&gt;返回有第一个和第二个类型的ForwardIterator成员。

0 个答案:

没有答案