在一些std库template的参数中,需要定义他/她自己的函数比较器less(a, b),more(a, b)那么std::some_template<T, *, myComparator()>,为什么呢?
比较器的目的是允许对已排序的stl容器中的对象进行排序.如果默认比较器不适合容器将容纳的对象类型,则只需提供自己的比较器.
例如,如果您要创建以下的std :: set struct,那么您需要编写自己的比较器.
struct Person
{
std::string first_name, last_name, phone_number;
}
Run Code Online (Sandbox Code Playgroud)
默认比较器知道如何比较数字和字符串,但它不知道如何比较Person对象.这就是人们如何编写自定义比较器来通过last_name对Person对象进行排序的方法.
struct Person_Comparator
{
bool operator()(const Person &a, const Person &b) const {
return a.last_name < b.last_name;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |