형님들 remove_copy_if 와 copy_if의 차이점을 잘 모르겠는데오 ㅇㅅㅇ


vector vectorOne = { 1, 100, 100, 3 };

vector vectorTwo;


// vectorTwo의 사이즈를 vectorOne의 사이즈만큼 생성과 동시에 공간할당

vectorTwo.resize(vectorOne.size());


remove_copy_if(cbegin(vectorOne), cend(vectorOne), begin(vectorTwo), [](int i) { return i == 100; });


의 결과는 vectorTwo에 { 1, 3, 0, 0 } 으로 업데이트 되잖아요 ㅇㅅㅇ


copy_if 도 마찬가지로


copy_if(cbegin(vectorOne), cend(vectorOne), begin(vectorTwo), [](int i) { return i != 100; });


하면 { 1, 3, 0, 0 } 똑같은 값으로 할당되는데 둘의 차이점은 먼가요? ㅇㅅㅇ


remove_if는 삭제될 항목과 그렇지 않는 항목을 원본vector의 있는 항목들을 서로 분할시켜주는 역할로알고있는데


굳이 remove_copy_if 만들어 놓은 이유를 모르겠슴요 둘이 내부적으로 다르게 동작하는건가요 형님들 ㅇㅅㅇ