Click here to Skip to main content
15,888,454 members
Home / Discussions / ATL / WTL / STL
   

ATL / WTL / STL

 
QuestionCreating sidebar for windows media player (similar to iTunes) Pin
smitha s4-Dec-09 0:27
smitha s4-Dec-09 0:27 
Questionre: probelms erasing a multimap entry Pin
Alan Kurlansky2-Dec-09 11:08
Alan Kurlansky2-Dec-09 11:08 
AnswerRe: re: probelms erasing a multimap entry [modified] Pin
kcynic2-Dec-09 18:42
kcynic2-Dec-09 18:42 
QuestionAdd event handler functions from ActiveX to VC++6.0 ATL Project Pin
jensreichert1-Dec-09 23:44
jensreichert1-Dec-09 23:44 
AnswerRe: Add event handler functions from ActiveX to VC++6.0 ATL Project Pin
Garth J Lancaster2-Dec-09 0:28
professionalGarth J Lancaster2-Dec-09 0:28 
AnswerRe: Add event handler functions from ActiveX to VC++6.0 ATL Project Pin
Garth J Lancaster2-Dec-09 0:34
professionalGarth J Lancaster2-Dec-09 0:34 
GeneralRe: Add event handler functions from ActiveX to VC++6.0 ATL Project Pin
MESCO2-Mar-10 20:26
MESCO2-Mar-10 20:26 
Questionsorting an STL list of =references= to objects Pin
kerchunk1-Dec-09 12:39
kerchunk1-Dec-09 12:39 
VC++6 on XP Pro

greetings all,

I've created an STL list object that stores =references= to objects. I've overloaded the less-than operator like numerous examples on the 'net say to do. The following code compiles and executes but does not sort - actually the order does change but not in a sorted order. I'm stumped - there must be some nuance I'm missing.

// sort_example.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <list>
#include <iterator>
#include <vector>
#include <algorithm>

using namespace std;

struct pstchip_pin_wor {
    string primitive;
    string pin_name;
    string pin_number;

    /* optional constructors */
    pstchip_pin_wor( string aa, string bb, string cc) {
        primitive  = aa;
        pin_name   = bb;
        pin_number = cc;
    }

    //overridding operators
    pstchip_pin_wor& pstchip_pin_wor::operator = (const pstchip_pin_wor &itemToCopy) {
        this->primitive  = itemToCopy.primitive;
        this->pin_name   = itemToCopy.pin_name;
        this->pin_number = itemToCopy.pin_number;
        return *this;
    }

    int pstchip_pin_wor::operator == ( const pstchip_pin_wor& itemToCompare) const {
        if( this->primitive == itemToCompare.primitive  && this->pin_name  < itemToCompare.pin_name ) return 1;
        return 0;
    }

    int pstchip_pin_wor::operator  < ( const pstchip_pin_wor& itemToCompare) const {
        if( this->primitive  < itemToCompare.primitive ) return 1;
        if( this->primitive == itemToCompare.primitive && this->pin_name < itemToCompare.pin_name) return 1;
        return 0;
    }

};

//main function
int main(int argc, char* argv[]) {

int nRetCode = 0;

list<pstchip_pin_wor*>  wors_pstchip_pins;

//populate list
wors_pstchip_pins.push_back( new pstchip_pin_wor( "Europe",        "Spain",   "Madrid" ) );
wors_pstchip_pins.push_back( new pstchip_pin_wor( "North America", "USA",     "Washington DC" ) );
wors_pstchip_pins.push_back( new pstchip_pin_wor( "North America", "Canada",  "Ottawa" ) );
wors_pstchip_pins.push_back( new pstchip_pin_wor( "Europe",        "Germany", "Berlin" ) );
wors_pstchip_pins.push_back( new pstchip_pin_wor( "South America", "Brazil",  "Sao Paulo" ) );
wors_pstchip_pins.push_back( new pstchip_pin_wor( "North America", "Mexico",  "Mexico City" ) );

cout << "before sorting" << endl << endl;
for( list<pstchip_pin_wor*>::iterator ka = wors_pstchip_pins.begin(); ka != wors_pstchip_pins.end(); ka++ ) {
     cout << (*ka)->primitive << "==" << (*ka)->pin_name << "==" << (*ka)->pin_number << endl;
}

wors_pstchip_pins.sort();

cout << endl << "after  sorting" << endl << endl;
for( list<pstchip_pin_wor*>::iterator zm = wors_pstchip_pins.begin(); zm != wors_pstchip_pins.end(); zm++ ) {
     cout << (*zm)->primitive << "==" << (*zm)->pin_name << "==" << (*zm)->pin_number << endl;
}

return nRetCode;

} //end-function





Would someone be kind enough to point what I'm doing wrong/not doing right?

TIA,

kerchunk
AnswerRe: sorting an STL list of =references= to objects Pin
kerchunk1-Dec-09 14:44
kerchunk1-Dec-09 14:44 
GeneralRe: sorting an STL list of =references= to objects Pin
Simple Inheritance1-Dec-09 16:48
Simple Inheritance1-Dec-09 16:48 
GeneralRe: sorting an STL list of =references= to objects Pin
kerchunk1-Dec-09 20:56
kerchunk1-Dec-09 20:56 
GeneralRe: sorting an STL list of =references= to objects Pin
kerchunk2-Dec-09 10:02
kerchunk2-Dec-09 10:02 
GeneralRe: sorting an STL list of =references= to objects [modified] Pin
Simple Inheritance2-Dec-09 10:48
Simple Inheritance2-Dec-09 10:48 
GeneralRe: sorting an STL list of =references= to objects Pin
kerchunk3-Dec-09 19:42
kerchunk3-Dec-09 19:42 
GeneralRe: sorting an STL list of =references= to objects Pin
Simple Inheritance4-Dec-09 10:38
Simple Inheritance4-Dec-09 10:38 
GeneralRe: sorting an STL list of =references= to objects Pin
kerchunk6-Dec-09 9:03
kerchunk6-Dec-09 9:03 
QuestionHow to get clipping region of windowless activex? Pin
smalti1-Dec-09 9:15
smalti1-Dec-09 9:15 
QuestionError on using BMP image in LoadBitmap Pin
am 200926-Nov-09 0:47
am 200926-Nov-09 0:47 
AnswerRe: Error on using BMP image in LoadBitmap Pin
KingsGambit29-Nov-09 19:16
KingsGambit29-Nov-09 19:16 
QuestionHow to control IWMPPlayer? Pin
kcynic25-Nov-09 16:30
kcynic25-Nov-09 16:30 
QuestionNo Keyboard Support for ActiveX Controls in WIN32 App Pin
hZenz23-Nov-09 0:12
hZenz23-Nov-09 0:12 
QuestionHow to implement a multi-column menu? Pin
hawkgao012919-Nov-09 21:00
hawkgao012919-Nov-09 21:00 
AnswerRe: How to implement a multi-column menu? Pin
hawkgao012919-Nov-09 21:58
hawkgao012919-Nov-09 21:58 
QuestionExposing methods via a COM object Pin
mbet87817-Nov-09 22:24
mbet87817-Nov-09 22:24 
AnswerRe: Exposing methods via a COM object Pin
Jonathan Davies18-Nov-09 7:42
Jonathan Davies18-Nov-09 7:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.