模板参数数量错误
wrong number of template arguments
我想写模板归并排序
template <class RandomAccessIterator, class Comparator = std::less<>>
void MergeSort(RandomAccessIterator begin, RandomAccessIterator end, Comparator compare) {
int s = end - begin;
if (s > 1)
{
RandomAccessIterator middle = begin + s / 2 + 1;
MergeSort(begin, middle, compare);
MergeSort(middle, end, compare);
std::inplace_merge(begin, middle, end, compare);
}
}
我收到的消息是:错误:模板参数的数量错误(0,应该是 1)
模板 >.
我试图将std::less移动到函数声明,但也失败了。我需要做什么?
由于您将问题标记为 C++11
,看来您不能使用菱形运算符。
正如您在 documentation 中看到的那样,仅在 C++14
.
之后才允许使用 std::less<>
形式
你在这里可以做的是使用另一种形式:
std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>
我想写模板归并排序
template <class RandomAccessIterator, class Comparator = std::less<>>
void MergeSort(RandomAccessIterator begin, RandomAccessIterator end, Comparator compare) {
int s = end - begin;
if (s > 1)
{
RandomAccessIterator middle = begin + s / 2 + 1;
MergeSort(begin, middle, compare);
MergeSort(middle, end, compare);
std::inplace_merge(begin, middle, end, compare);
}
}
我收到的消息是:错误:模板参数的数量错误(0,应该是 1) 模板 >.
我试图将std::less移动到函数声明,但也失败了。我需要做什么?
由于您将问题标记为 C++11
,看来您不能使用菱形运算符。
正如您在 documentation 中看到的那样,仅在 C++14
.
std::less<>
形式
你在这里可以做的是使用另一种形式:
std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>