Updated:

1 minute read

개요

  • 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