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
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;