我正在通過加速C++的練習,我目前正在研究有關泛型函數的章節。我遇到了一個我想寫的算法,我認爲它是給定迭代器的value_type。我遇到這個帖子Default template arguments for function templates,這有助於很多,但我想知道我的方法是否正確。如果情況確實如此,我不想陷入壞習慣。函數模板:默認的類型參數
template <class ForwardIt, class BinaryOp = std::greater<std::iterator_traits<ForwardIt>::value_type> >
ForwardIt maxInRange(ForwardIt begin, ForwardIt end, BinaryOp op = BinaryOp()) {
// test here to reduce the loop count by 1
if (begin == end)
return begin;
ForwardIt largest = begin;
while (++begin != end)
if (op(*begin, *largest))
largest = begin;
return largest;
}
還有一個問題,對不起。有關BinaryOp類型參數的語法如何工作?我不太明白如何調用一個類型,就好像它是一個函數會產生替代效果一樣。謝謝你的時間。對此,我真的非常感激。
關鍵是' operator()(一些參數...);' –
user3159253
2014-09-02 04:27:06