Thread overview
Ok so maybe this C++ stuff is ok...
Jul 01, 2002
Michael Comperchio
Jul 01, 2002
Pavel Minayev
Jul 01, 2002
Michael Comperchio
Jul 01, 2002
Jan Knepper
July 01, 2002
I've been playing with the STL..really neat to be able to create dynamic arrays, dictionaries, and linked lists!!! with a couple a lines of code. It's the linked list I have a question about. I'm trying to maintain "ordered maps" if you will using the list template. I have it working by creating a class to associate the two things (a date, and a recordnumber). I think I may have overkilled the class (I created ALL the operators). Any suggestions for a 'bare bones' class that will work with list template?..

Another question: any way to force the automatic sorting of lists?

Another question: I'm creating record struct pointers on the fly. Basically read in the whole file creating dynamic structs and storing the addresses in a vector...I have a feeling that when I hack this into the MFC doc class I'm going to get burned by this...just can't think of how.

Another question: Could I create a vector of lists...
struct DataRecord
{
  int RecordNumber;
	char Task[256];
	char DueDate[10];
	char Priority[2];
	int Completed;
	char Notes[2048];
  int Deleted;
} ;

vector<struct DataRecord * > MyStuff; // my data file goes in here

list<int > OrderByRecordNumber; // simply walk through in order
list<DateOrder > OrderByDate;  // walk through by due date
list<PriorityOrder > OrderByPriority: // walk through by priority

vector <list > MyDisplaySorts; // this is the question... I'd like to simply set a flag and automagically use the right list for my sorting...

Any input would be appreciated...

Thanks
Michael

July 01, 2002
On Mon, 01 Jul 2002 14:42:14 -0400 Michael Comperchio <mcmprch@adelphia.net> wrote:

> I've been playing with the STL..really neat to be able to create dynamic arrays, dictionaries, and linked lists!!! with a couple a lines of code. It's the linked list I have a question about. I'm trying to maintain "ordered maps" if you will using the list template. I have it working by creating a class to associate the two things (a date, and a recordnumber). I think I may have overkilled the class (I created ALL the operators). Any suggestions for a 'bare bones' class that will work with list template?..

I wonder why you need to write that "ordered map", if std::map is already
ordered by key?

> Another question: any way to force the automatic sorting of lists?

No. Either you calculate the place to insert new item yourself (although
there might be some STL algorithms to help in this task), or resort
the list whenever needed.

> list<int > OrderByRecordNumber; // simply walk through in order list<DateOrder > OrderByDate;  // walk through by due date list<PriorityOrder > OrderByPriority: // walk through by priority
> 
> vector <list > MyDisplaySorts; // this is the question... I'd like to simply set a flag and automagically use the right list for my sorting...

Since all your lists are of different type, I don't see any way (pointer, reference, stub etc) to do that.
July 01, 2002
Pavel Minayev wrote:
> On Mon, 01 Jul 2002 14:42:14 -0400 Michael Comperchio <mcmprch@adelphia.net> wrote:
> 
> 
>>I've been playing with the STL..really neat to be able to create dynamic arrays, dictionaries, and linked lists!!! with a couple a lines of code. It's the linked list I have a question about. I'm trying to maintain "ordered maps" if you will using the list template. I have it working by creating a class to associate the two things (a date, and a recordnumber). I think I may have overkilled the class (I created ALL the operators). Any suggestions for a 'bare bones' class that will work with list template?..
> 
> 
> I wonder why you need to write that "ordered map", if std::map is already
> ordered by key?

'cuz this is really just for my fun...and linked list is more my natural  way of thinking...

>  
> 
>>Another question: any way to force the automatic sorting of lists?
> 
> 
> No. Either you calculate the place to insert new item yourself (although
> there might be some STL algorithms to help in this task), or resort
> the list whenever needed.
>  

darn...

> 
>>list<int > OrderByRecordNumber; // simply walk through in order
>>list<DateOrder > OrderByDate;  // walk through by due date
>>list<PriorityOrder > OrderByPriority: // walk through by priority
>>
>>vector <list > MyDisplaySorts; // this is the question... I'd like to simply set a flag and automagically use the right list for my sorting...
> 
> 
> Since all your lists are of different type, I don't see any way
> (pointer, reference, stub etc) to do that.

I didn't see any way either...but thought I might have been missing the obvious again..

thanks!!

Michael

July 01, 2002
Michael Comperchio wrote:

> I've been playing with the STL..really neat to be able to create dynamic arrays, dictionaries, and linked lists!!! with a couple a lines of code. It's the linked list I have a question about. I'm trying to maintain "ordered maps" if you will using the list template. I have it working by creating a class to associate the two things (a date, and a recordnumber). I think I may have overkilled the class (I created ALL the operators). Any suggestions for a 'bare bones' class that will work with list template?..
>
> Another question: any way to force the automatic sorting of lists?

Of lists... No.
Use a 'map' instead!
map < Key, Data *, less < Key > >    ...

> Another question: I'm creating record struct pointers on the fly.
> Basically read in the whole file creating dynamic structs and storing
> the addresses in a vector...I have a feeling that when I hack this into
> the MFC doc class I'm going to get burned by this...just can't think of how.

No it won't. If you are experienced enough with C++ it's no problem.

> Another question: Could I create a vector of lists...

Yes!

class  DataList : public list < DataRecord * >
{
};

class DataListVector : public  vector < DataList * >
{
};


class

>
> struct DataRecord
> {
>    int RecordNumber;
>         char Task[256];
>         char DueDate[10];
>         char Priority[2];
>         int Completed;
>         char Notes[2048];
>    int Deleted;
> } ;
>
> vector<struct DataRecord * > MyStuff; // my data file goes in here
>
> list<int > OrderByRecordNumber; // simply walk through in order list<DateOrder > OrderByDate;  // walk through by due date list<PriorityOrder > OrderByPriority: // walk through by priority
>
> vector <list > MyDisplaySorts; // this is the question... I'd like to simply set a flag and automagically use the right list for my sorting...

What I would do in this case is use a 'set' to do the adminitration of the
allocated pointers.
Than you map's to 'map' <g> key's to the pointers.

Thus

class  DataSet : public  set < DataRecord *, less < DataRecord * > >
{
};


class  NumberDataSetMap : public  map < int, DataRecord *, less < int > >
{
};

class StringDataSetMap : public  map < CString, DataRecord *, less < CStrng > >
{
};

HTH
Jan