示例#1
0
int cmp_vec_by_vec (const Vec1& a, const Vec2& b, Cmp cmp)
{
    typename Vec1::const_iterator
        ai = a.begin(),
        aend = a.end();
    typename Vec2::const_iterator
        bi = b.begin(),
        bend = b.end();

    for(; ai != aend && bi != bend; ++ai, ++bi)
    {
        int lres = cmp(*ai, *bi);
        if(lres < 0)
            return -1;
        else if(lres > 0)
            return +1;
    }

    if(ai == aend)
        if(bi == bend)
            return 0;
        else
            return -1;
    else
    { // ai != aend
        ARAGELI_ASSERT_1(bi == bend);
        return +1;
    }
}