[C++] erase/erase_if
Updated:
개요
- erase
- 값이 같은 요소를 삭제하는 함수
- 삭제된 수를 반환
- erase_if
- 조건을 충족하는 요소를 삭제하는 함수
- 삭제된 수를 반환
예제
- 코드
#include <iostream> #include <list> #include <map> #include <string> #include <type_traits> #include <vector> using namespace std; int main() { auto print = [](auto elements) { for (const auto &iter : elements) { if constexpr (is_same_v<map<int, string>, decltype(elements)>) { cout << iter.first << " "; } else { cout << iter << " "; } } cout << endl; }; auto erase_test = [print]() { vector<int> v = {1, 2, 3, 4, 5, 5, 6}; print(v); cout << erase(v, 5) << endl; print(v); cout << endl; list<int> l = {1, 2, 3, 4, 5, 5, 6}; print(l); cout << erase(l, 5) << endl; print(l); }; erase_test(); cout << endl << "------" << endl << endl; auto erase_if_test = [print]() { vector<int> v = {1, 2, 3, 4, 5, 6}; print(v); cout << erase_if(v, [](int i) { return i % 2 == 0; }) << endl; print(v); cout << endl; map<int, string> m = {{1, "a"}, {2, "b"}, {3, "c"}}; print(m); cout << erase_if(m, [](auto &item) { auto &[key, value] = item; return key % 2 == 0; }) << endl; print(m); }; erase_if_test(); return 0; }
- 실행 결과
1 2 3 4 5 5 6 2 1 2 3 4 6 1 2 3 4 5 5 6 2 1 2 3 4 6 ------ 1 2 3 4 5 6 3 1 3 5 1 2 3 1 1 3