Notice
Recent Posts
Recent Comments
Link
- 책_곽용재님 홈페이지
- 책_노란북 - 책 가격비교
- 책_김재우-SICP번역
- 플밍_쏘쓰포지
- 플밍_CodingHorror ?
- 플밍_상킴
- 플밍_김민장님
- GPGStudy
- 플밍_jz
- 플밍_샤방샤방님
- 플밍_글쓰는프로그래머2
- 플밍_키보드후킹
- 사람_재혁
- 사람_kernel0
- 사람_경석형
- 사람_kikiwaka
- 사람_Junios
- 사람_harry
- 사람_어떤 개발자의 금서목록..
- 사람_모기소리
- 사람_웅섭형
- 사람_민식형
- 도스박스 다음카페
- 플레이웨어즈 - 게임하드웨어벤치마크
- David harvey의 Reading Marx's c…
- 한겨레_임경선의 이기적인 상담실
- 본격2차대전만화 - 굽시니스트
- 영화_정성일 아카이브
- 영화_영화속이데올로기파악하기
- 음식_생선회
- 죽력고
- 사람_한밀
- 플밍_수까락
- 게임제작
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 강유원
- 프로그래밍
- 일리아스
- 고전강의
- 진삼국무쌍5
- 책
- 영화
- 유시민
- Programming
- template
- 건강
- 노무현
- 태그가 아깝다
- 삼국지6
- 인문학
- BSP
- 단상
- 소비자고발
- c++
- 진중권
- 게임
- stl
- 정신분석
- 삼국지
- modernc++
- 고등학교 사회공부
- 김두식
- 유머
- programming challenges
- 정성일
Archives
- Today
- Total
04-23 12:55
lancelot.com
is_transparent 본문
- 객체 뿐만아니라 비교 기준이 되는 멤버 값으로도 검색 가능하게 하려면
- People 객체와 문자열로 비교 가능해야한다
- 비교 함수객체안에 is_transparent 멤버타입이 있어야한다. (C++14)
- 신기하네... 나중에 시간나면 더 찾아봐야겠다.
#include<iostream>
#include<set>
struct People
{
std::string name;
int age;
People(std::string name, int age) : name{ name }, age{ age } { }
};
struct PeopleCompare
{
bool operator()(const People& p1, const People& p2) const
{
return p1.name < p2.name;
}
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;
}
using is_transparent = int; // C++14
};
int main()
{
std::set<People, PeopleCompare> s;
s.emplace("kim", 20);
s.emplace("lee", 25);
s.emplace("park", 40);
s.emplace("choi", 30);
auto p = s.find({ "kim", 20 }); // People("kim", 20)
// People 을 검색할때, name으로만 검색하니, s.find("kim") 만 넣을수는 없을까?
// 1. PeopleCompare 에 People 과 std::string 을 비교할 수있는 operator를 제공한다
// 2. PeppleCompare 에 is_transparent 멤버를 생성해준다 (C++14)
p = s.find("kim");
std::cout << p->name << std::endl;
std::cout << p->age << std::endl;
}