본문 바로가기

C++ Programming/STL

함수-객체

1. 함수-객체란 함수처럼 행동하는 모든 객체를 의미한다.

ex)
class PrintInt{
    public :
            void operator() (int elem) const {
                 cout << elem << ' ';
            }
 };

for_each(coll1.begin(),coll1.end(),PrintInt());

1. 함수 객체는 스마트 함수이다.
2. 각각의 함수 객체는 자신만의 타입을 가지고 있다.
3. 함수-객체는 대부분의 경우 기존의 함수보다 빠르다.

2. 미리 정의된 함수-객체
ex)
   set<int> coll;
   set<int,less<int>> coll;

transform(coll.begin(),coll.end(), // 소스
              coll.begin(),  //목적지
              negate<int>)); //동작 - 미리정의된 함수객체 - 호출된 모든 int타입의 원소에 대해서 부정된 원소를 반환한다.
transform(coll.begin(),coll.end(), //소스
              coll.begin(), //목적지
              multiplies<int>()); //동작 - 자신의 값으로 자신을 곱하게 된다. 결과는 덮어쓰기
transform(coll.begin(),coll.end(), //소스
              back_inserter(coll2), //목적지
              bind2nd(multiplies<int>(),10)); //동작 - 값에 10을 곱해 결과는 덮어쓰기
replace_if(coll.begin(),coll.end(), //소스
              bind2nd(equal_to<int>(),70), //변경조건
              42); //새로운 값
coll2.erase(remove_if(coll.begin(),coll.end(), //범위
                 bind2nd(less<int>(),50)), //제거조건
                 coll2.end());