std::equal_range上cppreference.com文檔顯示了一個可能的實現:可能實現的std ::的equal_range
template<class ForwardIt, class T>
std::pair<ForwardIt,ForwardIt>
equal_range(ForwardIt first, ForwardIt last,
const T& value)
{
return std::make_pair(std::lower_bound(first, last, value),
std::upper_bound(first, last, value));
}
但這看起來更優化的同時仍然很簡單:
template<class ForwardIt, class T>
std::pair<ForwardIt,ForwardIt>
equal_range(ForwardIt first, ForwardIt last,
const T& value)
{
first = std::lower_bound(first, last, value);
return std::make_pair(first,
std::upper_bound(first, last, value));
}
因爲該解決方案是很明顯的,有什麼理由不使用?
也許是因爲它不那麼直截了當? – user975989