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() ); |
'Programming > C++' 카테고리의 다른 글
[C++] 빌드 시간 구하기 (0) | 2012.09.26 |
---|---|
[C++] 브레이크 포인트 (0) | 2012.09.26 |
[C++] equal_rage by 용호 (0) | 2012.06.25 |
[C++] iconv를 이용하여 문자 인코딩 방식 변경 By 용호 (0) | 2011.09.16 |
[C++] Vector Erase 문제 By 용호 (0) | 2011.03.25 |
댓글