【发布时间】:2023-03-15 13:53:01
【问题描述】:
我想将以下函数作为 C++ STL 中 sort() 函数中的第三个参数传递。
bool fn(int a, int b, vector<int> v1)
{
if (v1[a]< v1[b]) return true;
else return false;
}
我想根据另一个向量中的值对一个向量进行排序。
sort(v2.begin(), v2.end(),fn);
如何将第一个向量v1 传递给函数fn,以便函数fn 可以在不使用全局变量的情况下对第二个向量v2 进行排序?
【问题讨论】:
-
使用
lambda并在那里传递第二个 vect -
使用捕获 lambda(或者可能是手写的函数对象)而不是常规函数。
-
如果你不介意可以展示一下如何使用它吗?
-
旁注:
if(condition) return true; else return false;可以简化为return condition; -
我试图在
main中编写这个函数fn,希望它在作用域内,但没有奏效。
标签: c++ sorting stl c++17 c++14