All of the above - and then some.
Yes, look at it as a learning experience. Just tell yourself, I learned X new things today. Feels good, huh? So long as your peers review the code, not the coder, then np.
But what were they pointing out? Coding style? If so, what? Code didn't match coding style guidelines? Not enough comments? If they complain about speed or wrong algorithm - if it's that important, was it in the design doc?
A lot of people do that and seem to forget that the prime goal of a code review is to ensure that the code implements the design (oh, yes it is!! Let's not have arguments here ;-).
Maybe you got handed a bad design? Gigo? If you did the design, then maybe it was bad system level design?
You don't mention if this is your first ever review (with this company), but it sounds like your problem was leaving it all to the review & having a big bang.
You could have used Splint as you went along (but that doesn't check that code matches design). You probably ought to have discussed it with others, not worked in isolation.
Hmmm, can you ask your boss if you can try pair-programming on your next assignment?
Chin up; it happened to us all, and we are all better developers for it.