Мне интересно, почему STL не перегружает свои функции алгоритма, так что я могу их вызвать, просто предоставив контейнер и не беря более подробный способ передать begin + end iterators. Я, конечно, понимаю, почему мы также хотим использовать пару итераторов для обработки подпоследовательностей контейнера/массива, однако почти все вызовы этих методов используют целый контейнер:
std::for_each(myVector.begin(), myVector.end(), doSomething);
Я бы счел это более удобным, удобным для чтения и удобным для написания
std::for_each(myVector, doSomething);
Есть ли причина, по которой STL не предоставляет эти перегрузки? [EDIT: я не хочу заменять интерфейс этим ограниченным, но также предоставлять контейнерную платформу!] Внедряют ли они неоднозначность? Я думаю о чем-то вроде этого:
template<typename _Container, typename _Funct>
inline _Funct for_each(_Container c, _Funct f) {
return for_each(begin(c), end(c), f);
}
Я что-то пропустил?