У меня есть две функции (пример из книги):
std::string trim_right(std::string s)
{
s.erase(std::find_if(s.rbegin(), s.rend(), isalpha).base(),s.end() );
return s;
}
std::string trim_left(std::string s)
{
s.erase(s.begin(),
std::find_if(s.begin(), s.end(), isalpha));
return s;
}
Почему в функции trim_right
с обратными итераторами мне нужно использовать base()
, но в trim_left
с прямыми итераторами I не нужно?