Simple, vector<string>::iterator has no operator!, nor is it convertible to bool.
Perhaps you should explain why you think that it should somehow work and more importantly, what you are trying to do in the first place.
Not all implementations of the standard library are standard-compliant.
Check the iterator source code to see why it compiles and how it is implemented.