[C++] vector의 element들을 한번에 출력하기

반응형

STL Container에 들어있는 값들을 출력을 하려고 하면 흔히 사용하는 방법이
아래 코드와 같이 해당 Container에 속해있는 Iterator로 전진반복을 하면서 출력하는 것입니다.

#include <iostream>
#include <algorithm>
#include <vector>

int main( int argc, char **argv )
{
    std::vector< int > abc;
    
    abc.push_back( 1 );
    abc.push_back( 2 );
    abc.push_back( 3 );
    abc.push_back( 4 );
    abc.push_back( 5 );

    for( std::vector< int >::const_iterator Iter = abc.begin(); Iter != abc.end(); ++Iter ) {
        std::cout << *Iter << std::endl;
    }

    return 0;
}

실제로 for 구문에 대하여 모든 것을 인식해야 하고 조건, 증가식등을 알아야 하기 때문에 오히려 가독성이 떨어집니다.
std::copy 알고리즘을 사용하는 좋은 방법이 있습니다.
사용법은 바로 아래와 같습니다.

#include <iostream>
#include <algorithm>
#include <vector>

int main( int argc, char **argv )
{
    std::vector< int > abc;

    abc.push_back( 1 );
    abc.push_back( 2 );
    abc.push_back( 3 );
    abc.push_back( 4 );
    abc.push_back( 5 );

    std::copy( abc.begin(), abc.end(), std::ostream_iterator< int >( std::cout, "\r\n" ) );

    return 0;
}

std::copy가 begin부터 end까지 ( , ] 구간을
std::ostream_iterator 함수 객체에 대하여 = assign 연산을 수행 시켜주는 알고리즘이기 때문에 가능합니다.
물론 함수객체가 아닌 함수 포인터도 가능합니다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유