It is always signed. The only type that there is a "up to the compiler" option on is char, which is allowed to be either signed or unsigned.
Also, the CORRECT thing to do is to use vector<monster>::size_type - that is always the correct type. If you recompile the code using unsigned int with a STL implementation that uses a signed type for vector<>::size_type, then you would have to fix the code up again.
If you are going to use it a lot, you may want to do :
Code:
typedef vector<monster>::size_type MonsterSize;
and then use MonsterSize instead.
--
Mats