をテンプレートデフォルトのテンプレート引数の構文
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);
}
}
と簡単なバージョン
template <typename ForwardIter,
typename Comp = std::less<>>
void select_sort(ForwardIter first, ForwardIter last, Comp comp = Comp())
{
// Same as above
}
間のいずれかの違いは、どちらも動作するようには思えあります。それはちょうどスタイルの問題ですか?あるいは、どちらか一方を選択する必要がある場合ですか?
それを得た。ありがとう。 – user515430
完全性のために: 'std :: less()'が同じ配列を指していないポインタ( '<'と違って)にも許される特別な例外は、 'std :: less <> 。あなたがこの答えに入れた定義は、それを正しく処理しません。(私はあなたが「ちょっと」のように書いたことを理解しています) –
hvd
@hvd私は答えを修正しました、指摘してくれてありがとう! –