1 Replies - 3002 Views - Last Post: 29 July 2008 - 11:39 AM Rate Topic: -----

#1 The Architect 2.0  Icon User is offline

  • D.I.C Regular

Reputation: 37
  • View blog
  • Posts: 351
  • Joined: 22-May 08

traversing a matrix-like data structure?

Posted 28 July 2008 - 06:48 PM

i need some help on how to traversing my data structure. the purpose of this structure is to emulate a Data Grid View structure(at least as i understand it). overall, it should basically do what the windows media player library does.

that is to say:
-holds data across various categories
-sorts the music files based on these categories


explained in terms of a music library, the DS is implemented in terms of rows(representing songs) and columns(representing categories)(note: these are ACTUAL list objects - as opposed to 'rules' in terms of usage). all the rows are stored collectively in a STL list, likewise with the columns.


i want to make this DS function like a STL container. as such, it requires iterators. the problem originates with the fact that this DS is essentially a matrix, whereas all the STL containers can be visualized as 'lines'. i have to incorporate some EFFECTIVE way to navigate both columns and rows.

the method i'm currently using has iterators ONLY traversing the list of rows. once a row/reference has been retrieved, you can call the subscript operator on it and use it to call up the specific column you want.


however, i want to hear opinions on how to traverse a matrix-like, STL-emulating datastructure as my way feels extremely clunky(although not the worst of possible options).

Is This A Good Question/Topic? 0
  • +

Replies To: traversing a matrix-like data structure?

#2 Teaser  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 27
  • Joined: 14-July 08

Re: traversing a matrix-like data structure?

Posted 29 July 2008 - 11:39 AM

Sounds ok to me. You have a container for the rows, and each row presumably has another container to represent the columns.

Presumably you have something like:


struct Song
{
	// song stuff
	string sName, sArtist;
}


struct Row
{
	int index;   
	map<int, Column *> cols;  // int is the column index
				// destructor to delete each Column (or use smart pointer)
}


struct Column
{
	string name;
	Song * song;
   // destructor to delete Song (or use smart pointer)
}




What kind of query functions do you require? This would be what will effect efficiency of lookups and how much you want to store, i.e. in Row I have put a: int index , the purpose being you could provide a function/operator[] to find a row based on its index.

This post has been edited by Teaser: 29 July 2008 - 11:41 AM

Was This Post Helpful? 0
  • +
  • -

Page 1 of 1