나는 많이 사용 std::set<int>
하고 있으며 종종 그러한 세트에 숫자가 포함되어 있는지 확인해야합니다.
다음과 같이 쓰는 것이 자연 스럽습니다.
if (myset.contains(number))
...
하지만 contains
멤버 가 없어서 귀찮은 글을 써야합니다.
if (myset.find(number) != myset.end())
..
또는 명확하지 않은 경우 :
if (myset.count(element) > 0)
..
이 디자인 결정에 대한 이유가 있습니까?
count()
접근 방식의 또 다른 (더 근본적인) 문제 countains()
는해야하는 것 보다 더 많은 작업 을 수행한다는 것입니다.
contains()
a가있는 반환 bool
할 요소가 컬렉션에 위치에 대한 유용한 정보를 잃게 . find()
반복기의 형태로 해당 정보를 보존하고 반환하므로 STL과 같은 일반 라이브러리에 더 적합합니다. (즉,이 말은 아니다 bool contains()
.하지만, 매우에 -이 - 좋은 또는 필요하지 않습니다)
contains(set, element)
세트의 공용 인터페이스를 사용하여 무료 함수 를 작성하는 것은 쉽습니다 . 따라서 세트의 인터페이스는 기능적으로 완전합니다. 편리한 메서드를 추가하면 추가 기능을 활성화하지 않고 인터페이스가 증가합니다. 이는 C ++ 방식이 아닙니다.