I have seen code which use vector,
vector<int>s;
s.push_back(11);
s.push_back(22);
s.push_back(33);
s.push_back(55);
for (vector<int>::iterator it = s.begin(); it!=s.end(); it++) {
cout << *it << endl;
}
It is same as
for (auto it = s.begin(); it != s.end(); it++) {
cout << *it << endl;
}
How safe is in this case the use of the auto keyword? And what about if type of vector is float? string?
The auto keyword is simply asking the compiler to deduce the type of the variable from the initialization.
Even a pre-C++0x compiler knows what the type of an (initialization) expression is, and more often than not, you can see that type in error messages.
The auto keyword simply allows you to take advantage of this knowledge – if you (compiler) know the right type, just choose for me!