Мне интересно, есть ли способ сравнить итераторы мультимножества? Мне интересно сделать что-то вроде следующего:
std::multiset<int> mt{1,1,1,1,3,4,5};
auto it1 = mt.find(3);
auto it2 = mt.find(1);
cout << (it1 < it2) << endl; // this should print "0"
it1 = mt.find(equal_range);
auto p = mt.equal_range(1);
cout << (p.first < p.second) << endl; // this should print "1"
Однако я не могу использовать оператор сравнения для итераторов мультимножества.
Если бы значения в наборе были уникальными, я мог бы просто сравнить разыменованную версию итераторов, но я использую мультимножество именно потому, что значения могут быть неуникальными, и если 2 итератора указывают на разные экземпляры одного и того же значения, Мне нужен способ сравнить их на основе их относительного расположения в базовом дереве.
Это читается так, как будто вы хотите сравнить
std::distance(mt.begin(), it)
.