Set with Sort routine
I'm trying to create a set with my sort criteria specified, using MS
Developer Studio 7 and I can't get the syntax correct. Everything I try
creates a compile time error. Here's the basics:
#include <set>
using namespace std;
typedef struct {
int value;
} MyElem;
bool MyCompare( const MyElem& elem1, const MyElem& elem2 )
{
return( elem1.value < elem2.value );
}
void main()
{
set<MyElem, MyCompare> database;
}
The last line compiles with an error:
misc2.cpp(30) : error C2923: 'std::set' : 'MyCompare' is invalid as template
argument '#2', type expected
misc2.cpp(23) : see declaration of 'MyCompare'
Any clues? I've also tried:
set<MyElem> database( MyCompare );
but then I get this error:
misc2.cpp(31) : error C2664: 'std::set<_Kty>::set(const
std::set<_Kty>::key_compare &)' : cannot convert parameter 1 from 'bool
(const MyElem &,const MyElem &)' to 'const std::set<_Kty>::key_compare &'
with
[
_Kty=MyElem
]
and
[
_Kty=MyElem
]
Reason: cannot convert from 'overloaded-function' to 'const
std::set<_Kty>::key_compare'
with
[
_Kty=MyElem
]
No constructor could take the source type, or constructor overload
resolution was ambiguous
Anyone see what I'm doing wrong?
Bruce.