except you dont need a vector<vector<Tile*>> you could possibly use a vector<Tile*> but then again, you gain nothing by doign this AFAIK. I am assumign the number of terrain types is constant, and the only reason to use an array or vector is to speed up the terrain loop by replacing the switch statement with an index calculation. I havent tested the speed of indexing into a vector<> versus an array, but at best it would be the same speed so you gain nothing and lose stability, since a vector<> will tend to go out of scope without safeguards, while a dynamically allocated array will not.