Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Sort on on more-then-one dimentional array in STL

0 views
Skip to first unread message

Stanislav Malevanny

unread,
Feb 13, 2001, 10:45:01 AM2/13/01
to
I have multidimentional array of data with different datatypes like that:
 
 
fWidths      szServers      dDelays
======    =======     ======
 
0.456       Mastadon       67.003
5.678       Halloween      56.888
7.899       V-Day           3.999
6.777       Houston         7.344
 
 
I need order the table of values by fWidths   or by szServers or by dDelays. The problem is
that while STL has sort() function for single-dimentional array of any type what about
sorting multidimentional array of different types in STL?
 
TNX  
 
 
 
 

Dima Pasechnik

unread,
Feb 13, 2001, 11:08:24 AM2/13/01
to
"Stanislav Malevanny" <smale...@email.soes.com> writes:

Don't you think that you have an 1-dim array of records
with fields fWidths, szServers, dDelays, i.e.

struct Myrec {
double fWidths;
double dDelays;
string szServers;
... };
Myrec myarr[...];

and you just need the same std::sort() with custom order
predicates (instead of default "<" )?

HTH,
Dmitrii.
http://ssor.twi.tudelft.nl/~dima

Stanislav Malevanny

unread,
Feb 13, 2001, 4:54:35 PM2/13/01
to

found always qualified resposes in the STL newsgroup. To make a contribution

here is the code that solves the problem of sorting on multidimentional array ...

Stan, http://netston.tripod.com

TNX

======================== CONSOLE APP =============================

#include <iostream.h>

#include <algorithm>

#include <vector>

using namespace std;

class CWindowData

{

public:

    DOUBLE m_dWLatency;

    DOUBLE m_dWServerAvgLatency;

    DOUBLE m_dWStandardDeviation;

    DOUBLE m_dWMaxLatency;

    DOUBLE m_dWMinLatency;

    DOUBLE m_dWClientAvgLatency;

} ;

 

 

BOOL operator<(const CWindowData& x, const CWindowData& y)

{

    return x.m_dWClientAvgLatency < y.m_dWClientAvgLatency;

}

VOID main()

{

CWindowData m_WindowData;

vector<CWindowData> m_vecWindowData;

vector<CWindowData>::iterator it;

//

m_WindowData.m_dWClientAvgLatency = 700.99;

m_WindowData.m_dWLatency = 8.99;

m_WindowData.m_dWServerAvgLatency = 1.99;

m_WindowData.m_dWStandardDeviation= 3.99;

m_WindowData.m_dWMaxLatency = 5.99;

m_WindowData.m_dWMinLatency = 9.99;

m_vecWindowData.push_back( m_WindowData ); //first row inserted

//

m_WindowData.m_dWClientAvgLatency = 71.99;

m_WindowData.m_dWLatency = 89.99;

m_WindowData.m_dWServerAvgLatency = 17.99;

m_WindowData.m_dWStandardDeviation= 36.99;

m_WindowData.m_dWMaxLatency = 56.99;

m_WindowData.m_dWMinLatency = 98.99;

m_vecWindowData.push_back( m_WindowData ); //second row inserted

//

m_WindowData.m_dWClientAvgLatency = 371.99;

m_WindowData.m_dWLatency = 89.99;

m_WindowData.m_dWServerAvgLatency = 117.99;

m_WindowData.m_dWStandardDeviation= 436.99;

m_WindowData.m_dWMaxLatency = 256.99;

m_WindowData.m_dWMinLatency = 798.99;

m_vecWindowData.push_back( m_WindowData ); //third row inserted

for ( it = m_vecWindowData.begin(); it != m_vecWindowData.end(); it++ )

cout << it->m_dWClientAvgLatency << "\t"

<< it->m_dWLatency << "\t"

<< it->m_dWMaxLatency << "\t"

<< it->m_dWMinLatency << "\t"

<< it->m_dWServerAvgLatency << "\t"

<< it->m_dWStandardDeviation << endl;

 

 

cout << "Now after sorting: " << endl;

sort( m_vecWindowData.begin(), m_vecWindowData.end() );

for ( it = m_vecWindowData.begin(); it != m_vecWindowData.end(); it++ )

cout << it->m_dWClientAvgLatency << "\t"

<< it->m_dWLatency << "\t"

<< it->m_dWMaxLatency << "\t"

<< it->m_dWMinLatency << "\t"

<< it->m_dWServerAvgLatency << "\t"

<< it->m_dWStandardDeviation << endl;

0 new messages