ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [42] - Set operations
    Graphics 2021. 8. 11. 14:48

    이제 살펴볼 것들이 많이 남지 않았습니다. std::merge는 서로 다른 두 컨테이너를 합쳐주는 함수입니다. 두 컨테이너에 격납된 요소들을 취합하여 정렬을 한 다음 새로운 컨테이너에 격납한다고 합니다. 정렬을 안 하고 수행하면 아래와 같은 엉망진창 결과를  얻습니다. 하지만 정렬을 하고 merge하면 만족스러운 결과를 얻습니다.

    std::set_difference, set::set_intersection, std::set_symmetric_difference

    기초 집합이론에 나오는 내용 그대로입니다. 두 개의 컨테이너의 요소들에 대해서 집합 연산을 해줍니다. 한 번 두 집합의 Union을 찾는 예제를 해봅시다.

    잘 나옵니다

    이것도 정렬이 안 된 컨테이너에 대해 실시하면 엉망진창 결과를 얻습니다. 특별한 능력을 하나 갖고 있는데 한 집합 안에 중복된 요소가 존재하면 결과에도 똑같이 반영된다는 점입니다. 즉 {1,2,3,3,4} 과 {3,4,5}의 Union은 {1,2,3,3,4,5}가 나옵니다. std::set_difference에서도 상황은 변하지 않습니다. 중복된 값이 있으면 똑같이 고려됩니다.

    다음과 같은 예시를 고려해봅시다. 당신의 파티 팀원들은 열심히 필드에 떨어진 아이템들을 모았습니다. 그리고 이 아이템들은 어떤 퀘스트를 통과하기 위한 필수조건이며 당신의 파티 팀원들 중 누구라도 통과 조건에 해당하는 아이템을 갖고 있다면 인정이 됩니다. 이런 상황에서 당신의 파티가 퀘스트를 깰 수 있는지 없는지 자격을 검증하는데 사용될 알고리즘을 간략하게 짜볼 수 있습니다.

    A, B, C는 각각 갖고 있는 아이템이 다릅니다. 세 사람이 소유한 아이템의 합이 Valid의 조건을 만족하면 됩니다. 이 결과는 True가 나오지만 Valid에 세 사람 중 누구도 갖고 있지 않는 아이템을 추가하면 False가 나올 것입니다.

    'Graphics' 카테고리의 다른 글

    [44] - Container Adaptors, Priority Queue  (0) 2021.08.11
    [43] - Heap Operations  (0) 2021.08.11
    [41] - Binary Search  (0) 2021.08.11
    [40] - Sorting  (0) 2021.08.11
    [39] - Partition  (0) 2021.08.10
Designed by Tistory.