У меня есть stl-итератор, полученный в результате std:: find() и хочу проверить, является ли он последним элементом. Один из способов записать это:
mine *match = someValue;
vector<mine *> Mine(someContent);
vector<mine *>::iterator itr = std::find(Mine.begin(), Mine.end(), match);
if (itr == --Mine.end()) {
doSomething;
}
Но мне кажется, что декремент итератора end() запрашивает проблемы, например, если у вектора нет элементов, тогда это будет undefined. Даже если я знаю, что он никогда не будет пустым, это все равно кажется уродливым. Я думаю, что, возможно, rbegin() - это путь, но я не уверен, что лучший способ сравнить итератор с обратным итератором.