Используйте обратную итерацию , таким образом, у вас будет только одно end () - 1 -подобное вычисление (обратите внимание на rbegin () + 1) и без сравнений
for(vector<int>::iterator it = myValues.rbegin()+1; it != myValues.rend(); it++) {
cout << *it << endl;
}
cout << "Process last one: " << *myValues.rbegin() << endl;
Также для вектора <> вычисление end () - 1, вероятно, быстрое, поэтому вы также можете сделать это следующим образом:
for(vector<int>::iterator it = myValues.begin(); it != myValues.end()-1; it++) {
cout << *it << endl;
}
cout << "Process last one: " << *myValues.rbegin() << endl;
Если вы не хотите обрабатывать элемент после цикла, вы можете:
for(vector<int>::iterator it = myValues.rbegin(); it != myValues.rend(); it++) {
if(it == myValues.rbegin())
cout << "Process last one: " << *it << endl;
else
cout << *it << endl;
}