Re: Set with Sort routine

Tech-Archive recommends: Fix windows errors by optimizing your registry



Bruce Chastain wrote:
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 second template argument to set has to be the name of a type. It names type of the comparison object that the set is supposed to use.
To use your own comparison object, you have to pass its type to the template, and construct the set object with a comparison object.

So, start out by defining a type:

typedef bool (*comp)(const MyElem&, const MyElem&);

Then define the corresponding function, My Compare, which you've already done. Then create a set object that takes your type, and construct it with your function:

set<MyElem, comp> database(MyCompare);

--

Pete Becker
Roundhouse Consulting, Ltd.
.