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论点。
谢谢。