Добрый день, у меня есть класс C ++ Range
, который реализует operator <
для использования std::multiset<Range> ranges_type
.
Поскольку конструктор мультимножества не указывает пользовательский функтор сравнения, он использует std::less operator <
.
Однако мне нужно использовать второй функтор компаратора для std::multiset ranges_type
. В частности, я бы указал второй компаратор:
std::multiset<Range, PointerCompare>
где struct PointerCompare
выглядит так:
struct PointerCompare{
bool operator()(const Range& a, const Range& b) const {
return (a.mPtr == b.mPtr)
}
Можно ли использовать std:multiset
с несколькими функциями компаратора или есть обходной путь? Спасибо
Класс Range
выглядит так:
class Range {
public:
explicit Range(int item){
mLow = item;
mHigh = item;
mPtr = 0;
}
Range(int low, int high, char* ptr = 0,char* mapptr = 0){
mLow = low;
mHigh = high;
mPtr = ptr;
}
Range(void){
mLow = 0;
mHigh = 0;
mPtr = 0;
}
Range(const Range& r):
mLow(r.mLow),
mHigh(r.mHigh),
mPtr(r.mPtr)
{
}
bool operator==(const Range& rhs) const{
return (mLow <= rhs.mLow && mHigh >= rhs.mHigh);
}
bool operator<(const Range& rhs) const{
return mHigh < rhs.mHigh;
}
int low() const { return mLow; }
int high() const { return mHigh; }
char* getPtr() const { return mPtr; }
private:
int mLow;
int mHigh;
char* mPtr;
}; // class Range