Programming/C++
[C++] vector 간의 연산 (set_difference와 copy) By 용호
★용호★
2011. 4. 23. 22:00
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() ); |