Program Languege/STL

STL - 알고리즘

Frozen0113 2014. 3. 20. 11:07

STL - 알고리즘


template<class InputIterator, class Function>
    Fn1 for_each (
        InputIterator _First,
        InputIterator _Last,
        Function _Func
    );

 

 first ~ last 사이의 구간을 순회하면서 op 함수 객체를 호출한다. 반환 값은 함수 객체인데 보통 무시한다. for_each는 루프를 돌리는 역할밖에 하지 않으므로 구체적인 동작을 하는 함수 객체가 반드시 필요하다.


template<class InputIterator, class Type>
    InputIterator find (
        InputIterator _First,
        InputIterator _Last,
        const Type& _Val
    );

 

 입력 반복자 두개로 검색 대상 구간을 지정하여 검색하고자하는 값을 세번째 인수로 전달한다. first ~ last 구간에서 val값을 가지는 요소가 있는지 검색하여 그 반복자를 반환한다. 발견되지 않으면 last가 반환된다.

 



template<class ForwardIterator1, class ForwardIterator2>
    ForwardIterator1 find_end (
        ForwardIterator1 _First1,
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2,
        ForwardIterator2 _Last2
    );

 

template<class ForwardIterator1, class ForwardIterator2,
         class Predicate>
    ForwardIterator1 find_end (
        ForwardIterator1 _First1,
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2,
        ForwardIterator2 _Last2,
        Predicate _Pred
    );

 

 first1 ~ last1 전체 구간에서 first2 ~ last2 구간과 일치하는 패턴을 찾아 그 반복자를 반환한다. 뒤에서부터 검색을 한다.

 


 

template<class ForwardIterator1, class ForwardIterator2>
    ForwardIterator1 search (
        ForwardIterator1 _First1,
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2,
        ForwardIterator2 _Last2
    );

 

template<class ForwardIterator1, class ForwardIterator2,
         class Predicate>
    ForwardIterator1 search (
        ForwardIterator1 _First1,
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2,
        ForwardIterator2 _Last2,
        Predicate _Pred
    );

 

 first1 ~ last1 전체 구간에서 first2 ~ last2 구간과 일치하는 패턴을 찾아 그 반복자를 반환한다. 앞에서부터 검색을 한다.

 

 


template<class InputIterator1, class InputIterator2>
    bool equal (
        InputIterator1 _First1,
        InputIterator1 _Last1,
        InputIterator2 _First2
    );
template<class InputIterator1, class InputIterator2, class Predicate>
    bool equal (
        InputIterator1 _First1,
        InputIterator1 _Last1,
        InputIterator2 _First2,
        Predicate _Pred
    );

 

 first1 ~ last1 사이의 구간과 first2 이후의 구간에 있는 요소들을 일대일로 비교해 보고 모든 요소가 일치하면 true를 반환하고 하나라도 틀리면 false를 반환한다. 두번째 구간은 시작 위치를 지정하는 반복자만 전달되고 끝 반복자는 전달되지 않는데 두번째 구간도 첫번째 구간과 길이가 같다고 가정한다.



출처 - http://msdn.microsoft.com/ko-kr/library/yah1y2x8.aspx

      혼자 연구하는 C/C++