vector - C++ What is the best data structure for a two dimensional array of object "piles"? -
the size of grid known @ start (but different each time program starts). however, depth of each cell not mere value, rather population of objects vary during runtime.
q: recommended (efficient , easy maintain; less prone user error) way of implementing ?
- is kind of standard 2d array of vector pointers ?
- is 3d vector array ?
- is 2d array of linked lists, or binary trees (i thinking binary trees add complexity overhead because of continuous deletion , insertion node-gymnastics)
- is other custom data structure ?

use 1d array best cache locality. vector fine this.
std::vector<int> histdata( width * height ); if need index rows quickly, make point it:
std::vector<int*> histogram( height ); histogram[0] = &histdata[0]; for( int = 1; < height; i++ ) { histogram[i] = histogram[i-1] + width; } now have 2d histogram stored in 1d vector. can access this:
histogram[row][col]++; if wrap in simple class, you're less silly pointers. can make clear() function set histogram data 0 (which rips through histdata vector , zeros it).
Comments
Post a Comment