flat_map::erase_if

flat_map::erase_if (조건으로 요소 제거)

flat_map에서 조건을 만족하는 요소를 모두 제거하는 자유 함수예요. <flat_map> 헤더, C++23부터.

출처: cppreference

본문

std::erase_if는 flat_map에서 술어 pred를 만족하는 요소(키-값 쌍)를 모두 제거하고 그 개수를 반환해요.

template< class Key, class T, class Compare, class Allocator,
          class Pred >
typename std::flat_map<Key, T, Compare, Allocator>::size_type
    erase_if( std::flat_map<Key, T, Compare, Allocator>& c, Pred pred );
  • predconst std::pair<const Key, T>&를 받아 조건 판정해요.
std::flat_map<std::string, int> m{{"a",1},{"b",2},{"c",3}};
auto n = std::erase_if(m, [](const auto& kv){ return kv.second % 2 == 0; });
// 값이 짝수인 요소 제거, n == 1 (b 제거)

"조건을 만족하는 요소만 골라 지우기"를 한 번에 하는 함수예요. 벡터 기반이라 제거 후 요소를 당겨 정렬을 유지해요.

더 알아보기 (Learn more)

cppreference