Gibt es Unterschiede zwischenStandardvorlage Argumente für Funktionsschablonen Syntax
template <typename ForwardIter,
typename Comp = std::less<typename std::iterator_traits<ForwardIter>::value_type>>
void select_sort(ForwardIter first, ForwardIter last, Comp comp = Comp())
{
for (; first != last; ++first)
{
auto iter = std::min_element(first, last, comp);
std::swap(*first, *iter);
}
}
und die einfachere Version
template <typename ForwardIter,
typename Comp = std::less<>>
void select_sort(ForwardIter first, ForwardIter last, Comp comp = Comp())
{
// Same as above
}
Beide zu arbeiten scheinen. Ist es nur ein Stilproblem? Oder sind die Fälle, in denen man das eine oder das andere wählen muss?
Bekam es. Vielen Dank. – user515430
Der Vollständigkeit halber: die spezielle Ausnahme, daß 'std :: less()' auch für Zeiger erlaubt ist, die nicht auf das gleiche Array zeigen (anders als '<'), erstreckt sich auch auf 'std :: less <>()' . Die Definition, die Sie in diese Antwort eingeben, würde das nicht richtig behandeln.(Ich weiß, dass Sie "ein bisschen wie" geschrieben haben.) –
hvd
@hvd Ich korrigierte meine Antwort, danke für das Aufzeigen! –