我想在类内部创建一个方法(但我认为这是无关的),该方法根据特定函数返回的bool值对向量进行排序。。。 我读到这是可能的,但我不知道怎么做。
我希望调用该函数并将(例如)>
或<
作为参数,这样我就不必创建两个几乎完全相同的函数。
我如何想象函数的主体:
for (int i = 0 ; i < DIM - j; i++)
{
if (some_function(v[i], v[i+1]))
{
int temp;
temp = v[i];
v[i] = v[i+1];
v[i+1] = temp;
}
}
您可以通过传入一个函数对象来完成此操作:
template <typename Op>
void f(Op op) {
// ...
if (op(v[i], v[i+1])) // ...
}
这样称呼它:
f(std::less{}); // for <
f(std::greater{}); // for >
当然,这里的f
只是一个例子,但是您只需要通过这种方式为自己的函数添加一个模板参数即可。