Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Multiple sort?

Reply
Thread Tools

Multiple sort?

 
 
BCC
Guest
Posts: n/a
 
      07-22-2004
Hi,

I'm looking for some way to do a multiple sort on a vector of objects based
on the contents of the objects. For example if my vector is of these
objects:

class MyClass
{
public:
double value1;
double value2;
double value3;
};

So I would want to sort by each value in combination...

Is there an existing function to do this already somewhere? Do I need to
roll my own? Any suggestions for the fastest algorithm to use for this
(websites or books)?

Thanks,
B


 
Reply With Quote
 
 
 
 
Mike Wahler
Guest
Posts: n/a
 
      07-23-2004

"BCC" <(E-Mail Removed)> wrote in message
newsGXLc.622$(E-Mail Removed). ..
> Hi,
>
> I'm looking for some way to do a multiple sort on a vector of objects

based
> on the contents of the objects. For example if my vector is of these
> objects:
>
> class MyClass
> {
> public:
> double value1;
> double value2;
> double value3;
> };
>
> So I would want to sort by each value in combination...
>
> Is there an existing function to do this already somewhere?


There is ('std::sort', declared by <algorithm>), but you need
to help. Define appropriate comparison operators ('operator<()'),
each of which you pass as an argument to 'std::sort'.

> Do I need to
> roll my own?


Only part of it.

> Any suggestions for the fastest algorithm to use for this


I'd use 'std::sort', and only pursue other options if it
proved insufficient.

> (websites or books)?


www.josuttis.com/libbook

-Mike


 
Reply With Quote
 
 
 
 
rossum
Guest
Posts: n/a
 
      07-23-2004
On Thu, 22 Jul 2004 23:00:37 GMT, "BCC" <(E-Mail Removed)> wrote:

>Hi,
>
>I'm looking for some way to do a multiple sort on a vector of objects based
>on the contents of the objects. For example if my vector is of these
>objects:
>
>class MyClass
>{
>public:
> double value1;
> double value2;
> double value3;
>};
>
>So I would want to sort by each value in combination...
>
>Is there an existing function to do this already somewhere? Do I need to
>roll my own? Any suggestions for the fastest algorithm to use for this
>(websites or books)?
>
>Thanks,
>B
>

#include <algorithm>
#include <vector>
#include <cstdlib>

class MyClass
{
public:
double value1;
double value2;
double value3;

// Friends not necessary with public data,
// required with private data.
friend bool less1(const MyClass& a, const MyClass& b);
friend bool less2(const MyClass& a, const MyClass& b);
friend bool less3(const MyClass& a, const MyClass& b);
friend bool less_sum(const MyClass& a, const MyClass& b);
};

inline bool less1(const MyClass& a, const MyClass& b)
{ return a.value1 < b.value1; }

inline bool less2(const MyClass& a, const MyClass& b)
{ return a.value2 < b.value2; }

inline bool less3(const MyClass& a, const MyClass& b)
{ return a.value3 < b.value3; }

inline bool lessSum(const MyClass& a, const MyClass& b)
{ return (a.value1 + a.value2 + a.value3) < (b.value1 +
b.value2 + b.value3); }


main() {
std::vector<MyClass> mcVec(10);

// Sort by value1
std::sort(mcVec.begin(), mcVec.end(), less1);

// Sort by value2
std::sort(mcVec.begin(), mcVec.end(), less2);

// Sort by value3
std::sort(mcVec.begin(), mcVec.end(), less3);

// Sort by sum of all three values
std::sort(mcVec.begin(), mcVec.end(), lessSum);

return EXIT_SUCCESS;
} // end main()



--

The ultimate truth is that there is no Ultimate Truth
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Multiple ISPs and Multiple IP Ranges from Each ISP Chennak Cisco 10 06-08-2005 09:29 PM
IP Address Scheme for Multiple DMZs on Multiple PIXs Scotchy Cisco 2 10-07-2004 03:35 PM
Preventing multiple form submissions (multiple postbacks) Diane Selby ASP .Net 4 06-25-2004 09:50 PM
multiple dropdown lists = multiple data readers??? Andrew Kidd ASP .Net 3 04-22-2004 03:23 PM
Re: One solution containing multiple projects and multiple hosts Stephen Miller ASP .Net 0 06-24-2003 12:55 PM



Advertisments