반응형
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 연산을 수행 시켜주는 알고리즘이기 때문에 가능합니다.
물론 함수객체가 아닌 함수 포인터도 가능합니다.
반응형
'【Programming】' 카테고리의 다른 글
[C++] 파벌 싸움으로 대신 선택되는 Rust (레거시 호환성 vs 모던 툴링으로 분열) (0) | 2025.04.25 |
---|---|
[C++] 구조체(struct) 생성자 (0) | 2025.04.25 |
[Python] Windows OS에서 Tiny Python Projects 코딩 환경 구축 (0) | 2023.01.25 |
[Python] PyCharm - Failed to create a virtual environment (0) | 2022.10.28 |
[Python] Python 3.10보다 최대 10-60% 빠른 Python 3.11 릴리즈 (0) | 2022.10.27 |