What would "valid"/"invalid" means here?
If it's "exist" or "don't exist", then maybe using boost::optional<MyPod> would be enough.

Did you try with a reserved std::vector already? If size is a problem using it, then maybe STXXL would work for you:http://stxxl.sourceforge.net/