C++ 원소 삭제하기 remove
Notepad96
·2020. 11. 18. 14:13
300x250
1. remove
remove 함수는 algorithm 라이브러리의 포함되어 있다.
인자로 반복자들과 삭제할 원소값을 받으며 해당 원소를 찾으면 삭제한다.
단, 여기서 삭제는 완전한 삭제가 아니므로 추가적인 작업(resize)을 해주어야 한다.
2. 코 드
환경 : Visual studio 2019
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 10, 20, 30, 40, 30, 20, 10, 10, 40, 50 };
for (int i : v) cout << i << " ";
cout << "\n========================================\n";
auto it = remove(v.begin(), v.end(), 10);
v.resize( it - v.begin());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << "\n========================================\n";
it = remove_if(v.begin(), v.end(), [](int n) { return n > 30; });
v.resize(it - v.begin());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << "\n========================================\n";
return 0;
}
- remove 함수는 인자로 (시작 반복자, 종료 반복자, 삭제할 원소 값) 을 갖는다.
- remove를 해주어도 해당 원소들만 삭제되어 주는 깨끗한 상태가 되지 않는다. (vector의 크기 변화 X)
따라서 remove의 반환되는 반복자를 이용하여 vector를 resize 해주어야 한다.
- remove_if 함수는 remove에서는 특정 원소 값을 지정하였다면 remove_id에서는 조건을 주어 해당 조건을 만족하는 원소에 대하여 삭제를한다.
3. 참 조
300x250
'C++ > STL' 카테고리의 다른 글
C++ min, max 함수 (0) | 2020.11.19 |
---|---|
C++ time, clock 시간 측정, 현재 시간 구하기 (0) | 2020.11.18 |
C++ 값 회전하기 rotate (0) | 2020.11.18 |
C++ 거꾸로 뒤집기 reverse (0) | 2020.11.17 |
C++ map value sort - 맵 값 정렬 (0) | 2020.11.17 |