я уже реализовали тестовый случай, когда я могу иметь ключ как пользовательский класс следующим образом:делегат станд :: меньше или станд :: больше в состоянии
#include <iostream>
#include <map>
using namespace std;
class CoordinateValue
{
public:
short int x_;
short int y_;
CoordinateValue(short int x = 0, short int y = 0)
: x_(x),y_(y)
{
}
bool operator<=(const CoordinateValue &right) const
{
return ((this->x_ <= right.x_) && (this->y_ <= right.y_));
}
bool operator<(const CoordinateValue &right) const
{
return ((this->x_ < right.x_) && (this->y_ < right.y_));
}
bool operator>=(const CoordinateValue &right) const
{
return ((this->x_ >= right.x_) && (this->y_ >= right.y_));
}
bool operator>(const CoordinateValue &right) const
{
return ((this->x_ > right.x_) && (this->y_ > right.y_));
}
friend ostream &operator<<(ostream &out, const CoordinateValue &val)
{
out << "[ " << val.x_ << "," << val.y_ << " ]" << std::endl;
return out;
}
} ;
int main()
{
std::multimap<CoordinateValue,int,std::less_equal<CoordinateValue>> intersectionIn;
intersectionIn.insert(std::pair<CoordinateValue,int>(CoordinateValue(100,200),12));
intersectionIn.insert(std::pair<CoordinateValue,int>(CoordinateValue(1000,7),135));
intersectionIn.insert(std::pair<CoordinateValue,int>(CoordinateValue(0,2),112));
intersectionIn.insert(std::pair<CoordinateValue,int>(CoordinateValue(-10,-200),12));
intersectionIn.insert(std::pair<CoordinateValue,int>(CoordinateValue(-100,-200),12));
intersectionIn.insert(std::pair<CoordinateValue,int>(CoordinateValue(1000,2000),12));
std::multimap<CoordinateValue,int,std::greater<CoordinateValue>>::const_iterator iter = intersectionIn.begin();
while(iter != intersectionIn.end())
{
std::cout << iter->first;
++iter;
}
return 0;
}
Теперь я хочу позвонить станд :: больше/станд :: less/std :: less_equal на основе некоторого условия. Как мне делегировать? Например, для одного условия я объявляю контейнер с std :: less и для другого условия объявляю контейнер с std :: большим.
Некоторые намеки или ссылки были бы замечательными.
Благодаря
В момент времени компиляции? или время выполнения? – Jarod42
Я хочу иметь его во время выполнения – sajis997
Вы используете 'const_iterator' из' std :: map' с 'std :: greater' для перебора более одного с' std :: less', это предназначено? – Holt