본문 바로가기
Programming/C++

[C++] vector 간의 연산 (set_difference와 copy) By 용호

by ★용호★ 2011. 4. 23.

2011년 4월 23일 토요일

 업무를 하던 중 현재 가지고 있는 vector와 새로 들어온 vector를 비교해서 새로운 부분을 추가해야하는 작업이 주어졌었다. 처음에는 이것을 위해 for문을 돌며 노가다 작업을 했었는데 잘 찾아보니 아주 훌륭한 STL 함수가 있었다...

바로 set_difference를 이용하면 아주 간단하게 처리를 할 수 있다.

set_difference( 기존의 vector의 시작위치, 기존의 vector의 끝위치, 새로운 vector의 시작위치
                   , 새로운 vector의 끝위치, 결과를 담을 vector의 시작위치)

사용 예를 들면,

 vector<int> vecOldVector;
 vector<int> vecNewVector;
 vector<int> vecResultVector;

 vecResultVector.resize( vecNewVector.size() );

 set_difference( vecOldVector.begin(),vecOldVector.end(),vecNewVector.begin(),vecNewVector.end(),vecResultVector.begin() );

 이렇게 사용을 하면 알아서 비교하여 결과를 담아 준다. 

덤으로 vector간의 복사에서 모든 원소의 복사도 아주 쉽게 해결 할 수가 있다.

copy( 복사하려는 vector의 시작위치, 복사하려는 vector의 끝위치, 결과를 담을 vector의 시작위치)

사용 예

 vector<int> vecCopyVector;
 vector<int> vecResultVector;

 vecResultVector.resize( vecCopyVector.size() );
 
 copy( vecCopyVector.begin(), vecCopyVector.end(), vecResultVector.begin() );
 

댓글