조건자를 공부하던 도중 함수 어댑터도 함께 보고 있었는데
계속해서 나오는 bind1st 와 bind2nd 도저히 이해 가지 않아 그나마 내가 이해할수 있게 잘 설명된 부분이 있어
포스팅을 해서 정리 해본다.
bind2nd와, bind1st 함수 어댑터의 차이는 매개변수 부분에 있다.
bind2nd 에서 전달 받는 두개의 매개변수는 첫번째 매개변수는 계속해서 바뀌고, 두번째는 바뀌지 않는다.
바뀌지 않는 고정된 값을 전달하게 해주는 함수 어댑터가 bind2nd 이다.
bind2nd(less<int>(), 500) 이라는 구문이 있다 하면, less 클래스를 함수로 바꿔본다면 아래와 같이 된다.
bool less(int first, int second)
{
return first < second;
}
bind2nd는 두번째 매개변수가 바뀌지 않는다고 했으므로 아래와 같이 된다.
bool less(int first)
{
return first < 500;
}
bind1st 는 bind2nd와 달리 첫 번째 매개변수가 바뀌지 않는다.
그러므로 bind1st(less<int>(), 500) 은 아래와 같이 된다.
bool less(int second)
{
return 500 < second;
}
통틀어보면 바뀌지 않는다는 말은 고정된 값을 계속해서 쓴다는 말이고
난 이걸 더 간단하게 머리에 익히기 위해 나름 머리를 굴려 생각한것이
bind1st: 이항 함수자의 첫 번째 인자를 고정하여 단항 함수자로 변환한다.
bind2nd: 이항 함수자의 두 번째 인자를 고정하여 단항 함수자로 변환한다.
bind는 일단 영어로 묶는다는 뜻이다. 그리고 그다음 숫자가 1 이냐 2냐
1이면 첫번째를 묶는다, 2이면 두번째를 묶는다.
나름 이렇게 하면 외우기 쉬운거 같다.
'C++' 카테고리의 다른 글
학원 공부중!.. 모르는것 정리中 (0) | 2014.01.15 |
---|---|
[DirectX SDK 설치]Visual Studio 2010 디렉터리 관련 설정.. (0) | 2013.11.25 |
이클립스 C++ 환경 구축 (0) | 2013.10.05 |
상속과 다형성 (0) | 2013.09.27 |
정보은닉(Data Hiding)과 캡슐화(Encapsulation) (0) | 2013.09.02 |