std::less
是 C++ 標準庫中的一個函數對象(也稱為比較器或仿函數),它提供了兩個參數之間的“小于”操作。在模板編程中,std::less
通常用作默認的比較器,以便在容器或算法中比較元素。
以下是 std::less
在模板編程中的一些應用示例:
std::less
作為 std::sort
的默認比較器:#include<algorithm>
#include<vector>
#include<functional>
int main() {
std::vector<int> v = {3, 1, 4, 1, 5, 9};
std::sort(v.begin(), v.end(), std::less<int>());
// 現在 v 已經按升序排列
}
std::less
作為 std::map
的自定義比較器:#include<iostream>
#include <map>
#include<functional>
struct Person {
std::string name;
int age;
};
struct PersonLess {
bool operator()(const Person& lhs, const Person& rhs) const {
return std::less<int>()(lhs.age, rhs.age);
}
};
int main() {
std::map<Person, std::string, PersonLess> people;
people[{30, "Alice"}] = "Engineer";
people[{25, "Bob"}] = "Doctor";
people[{35, "Charlie"}] = "Professor";
for (const auto& p : people) {
std::cout << p.first.name << " is a " << p.second<< std::endl;
}
}
在這個例子中,我們使用 std::less
作為 PersonLess
比較器的一部分,根據年齡對 Person
結構體進行排序。
總之,std::less
在模板編程中非常有用,因為它提供了一種通用的方式來比較兩個值。你可以將其用作默認比較器,或者在需要自定義比較邏輯的地方進行特化。