Thread overview | ||||||
---|---|---|---|---|---|---|
|
July 01, 2002 Ok so maybe this C++ stuff is ok... | ||||
---|---|---|---|---|
| ||||
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 Re: Ok so maybe this C++ stuff is ok... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Michael Comperchio | 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 Re: Ok so maybe this C++ stuff is ok... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pavel Minayev | 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 Re: Ok so maybe this C++ stuff is ok... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Michael Comperchio | 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 |
Copyright © 1999-2021 by the D Language Foundation