Mega Code Archive

 
Categories / Visual C++ .NET / Collections
 

Use functor greaterMyClass^() as ordering rule

#include "stdafx.h" #include <cliext/queue> using namespace System; using namespace cliext; using namespace System::Collections::Generic; ref class MyClass{ public:     String^ Name;     MyClass() : Name(String::Empty) { }     MyClass(String^ name) : Name(name) { }     MyClass(const MyClass% orig){         Name = orig.Name;      }     MyClass% operator=(const MyClass% orig){         if (this != %orig)             Name = orig.Name;         return *this;     }     ~MyClass() { }     bool operator<(const MyClass^ rhs){         return (Name->CompareTo(rhs->Name) < 0);     }     bool operator>(const MyClass^ rhs){         return (Name->CompareTo(rhs->Name) > 0);     }     bool operator==(const MyClass^ rhs)     {         return (Name->Equals(rhs->Name));     } }; int main(array<System::String ^> ^args) {     priority_queue<MyClass^> petpq;     petpq.push(gcnew MyClass("A"));     petpq.push(gcnew MyClass("B"));     petpq.push(gcnew MyClass("C"));     petpq.push(gcnew MyClass("D"));     priority_queue<MyClass^> petpqr = priority_queue<MyClass^>(greater<MyClass^>());     petpqr.push(gcnew MyClass("E"));     petpqr.push(gcnew MyClass("F"));     petpqr.push(gcnew MyClass("G"));     petpqr.push(gcnew MyClass("H"));     while (!petpqr.empty())     {         Console::Write("{0} ", petpqr.top()->Name);         petpqr.pop();     }     return 0; }