OK, I haven't finished it, but you should be able to pick up where I left off

I've got other things to do with my time, sorry.
Here's how to use the changes:

Region region;
Uint16 current_tile;
// do your data loading of region (why isn't that implemented as a ctor?)
for(region.rewind();!region.end();current_tile = region++)
{
  // do your work on current_tile here
}

It's quick and dirty, but it's better than nested for loops.

You can use it within Region as well, so where you're using nested for loops to populate 'data', you can use the structure above instead.

Feel free to reject it if you don't like my changes, I was kind of rushed since I want to get back to working on field lord.