gpt4 book ai didi

c++ - std::sort 和 compare-function with template 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:10:53 26 4
gpt4 key购买 nike

我想对一个任意类型的 vector 进行排序,所以写了如下代码:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

template<class T>
bool compare(T a, T b) {
return a < b;
}

int main() {
vector<int> v;
v.push_back(3);
v.push_back(4);
v.push_back(2);
v.push_back(1);

sort(v.begin(), v.end(), compare);

for (size_t i = 0; i < v.size(); i++) {
cout << v.at(i) << " ";
}

return 0;
}

此代码未编译,错误消息如下:

..\src\Test.cpp:22:34: error: no matching function for call to 'sort(std::vector<int>::iterator, std::vector<int>::iterator, <unresolved overloaded function type>)'
..\src\Test.cpp:22:34: note: candidates are:

... and more

当我用具体类型实现比较函数时,它起作用了。谁能告诉我如何使用模板比较函数做到这一点?

最佳答案

您需要指定您想要的专业:

sort(v.begin(), v.end(), compare<int>);

Live on Coliru

关于c++ - std::sort 和 compare-function with template 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27984859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com