'bind1st'에 해당되는 글 1건

  1. 2013.11.16 [STL] bind2nd / bind1st 란 무엇인가..?
728x90

조건자를 공부하던 도중 함수 어댑터도 함께 보고 있었는데

계속해서 나오는 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이면 두번째를 묶는다.

 

나름 이렇게 하면 외우기 쉬운거 같다.

 

 

 

728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침