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; } }