- C++14 부터 사용가능.
- 미리 약속이 되어있는 기능.
struct PeopleCompare
{
bool operator()(const People& p1, const People& p2) const
{
return p1.name < p2.name;
}
// string만으로 검색이 가능하도록 추가 구현.
bool operator()(const People& p1, std::string_view name) const
{
return p1.name < name;
}
bool operator()(std::string_view name, const People& p1) const
{
return name < p1.name;
}
// set에서 비교의 기준을 다양한 타입으로 허용하기 위해서 선언해주어야 한다.
// 이때 void 부분은 어떠한 타입을 써도 상관없다.
using is_transparent = void;
}
int main()
{
std::set(People, PeopleCompare> s;
s.emplace("kim", 20);
// set의 find함수는 T를 인자로 받게 되어있는데,
// 실제 검색에서는 Name만 쓰기 때문에 최적화 차원에서 String만 보내고 싶을때,
// 다른 타입도 허용하기 위해서는 비교 함수 객체 안에 using is_transparent = void; 를 해준다.
auto p = s.find( "kim" );
}