1 분 소요

개요

  • 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