std::sort
是通过比较类参数化的模板。该函数本身将该类的一个对象作为参数,并“调用”它来比较待排序容器的元素。
我认为重要的是我们可以给 sort 一个具体的对象,而不是简单地让 sort 构造一个 Compare 对象本身。(如果不是,请纠正我。)
现在假设我们要实现一个函数,该函数将 a和 的比较函数foo
作为输入:vector<T>
T
template <class T, class Compare>
bool foo(const vector<T>& v, Compare comp);
作为此实现的一部分,我们希望对包含成对的不同向量进行排序T
,例如,int
对 a 进行排序vector<pair<T, int>>
。但是我们只想根据T
分量对这个向量进行排序。这意味着我们要将给定的订单提升T
到订单上pair<T, int>
并将该订单传递给std::sort
.
不使用 lambdas 怎么办?我的问题是我看不到将Compare
对象T
提升到一个 for 的方法pair<T, int>
。我只能提升Compare
类,然后构造一个对象,这意味着它foo
会完全忽略它的comp
论点。
谢谢。