Why do I need to dereference iterators? For example in the following program
#include <iostream>
#include <string>
#include <vector>
int main()
{
using namespace std;
string s("some string");
for(auto it = s.begin(); it != s.end(); && !isspace(*it); ++it)
*it = isupper(*it);
cout<<s;
}
Why is it necessary to use isupper(*it);
instead of just isupper(it);
?