I definitely see what you mean from a memory standpoint; that's what the Lazy Foo' tutorial said as well. It just struck me as an awfully processor-intensive task (relatively speaking) to make the map on the fly like that. Of course, it's also very possible (likley?) that I have an skewed view and it really is *way* better to do it on the fly.
I suppose that if I were to do it that way, I would just take my upper and lower bounds of the camera (what is displayed of the screen) and just apply the corresponding mapFile tiles directly to the screen, every cycle of the main game loop?
Alright, I think I got it. I moved the tempSurface initialization from outside the nested for loops to right before the current sprite from the spriteSheet is applied to it. I'm not really sure what was happening, but after each tile was pushed onto the tileVector, every entry in the vector was that new tile. I changed the for loop limits to only get the 3 sprites (instead of the whole sprite sheet) and I got textures, then moving the initialization fixed the vector error.
Wow. Thanks for all that. I went and fixed the stylistic comments, as well as the extra call to mapFile >> currentTileID. The funky symbol was an error in copy/pasting the code here. I also added your CreateEmptySurface function you linked to. I see what you mean about trying to draw to a nonexistant surface, but I'm still just getting white when I run. I'll keep looking at my code, but thank you again for such a complete response!
Also, by setting tileVector to a single tile bitmap that I map, it is properly displayed, so I guess that the lower half of the function is correct.