Ich habe bereits einen Testfall implementiert, wo ich Schlüssel als eigene Klasse haben können wie folgt:Delegierten std :: weniger oder std :: mehr in Bedingung
#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;
}
Jetzt möchte ich nennen std :: größer/std :: less/std :: less_equal basierend auf einer Bedingung. Wie delegiere ich? Für eine Bedingung deklariere ich zum Beispiel den Container mit std :: less und für andere Bedingungen deklariere ich den Container mit std :: large.
Einige Hinweis oder Referenz wäre großartig zu haben.
Dank
Auf Kompilierungsbedingungen? oder Laufzeit eins? – Jarod42
Ich möchte es zur Laufzeit haben – sajis997
Sie verwenden einen 'const_iterator' aus einer' std :: map' mit 'std :: greater', um über eins mit' std :: less 'zu iterieren, ist es beabsichtigt? – Holt