1. ホーム
  2. c++

[解決済み] なぜstd::setには "contains "メンバ関数がないのですか?

2022-12-03 19:39:46

質問

私は std::set<int> を多用しており、しばしば私は単にそのようなセットに数字が含まれているかどうかをチェックする必要があります。

と書くのが自然だろう。

if (myset.contains(number))
   ...

しかし contains のメンバがいないので、面倒なことを書く必要があります。

if (myset.find(number) != myset.end())
  ..

または、それほど明白でないもの。

if (myset.count(element) > 0) 
  ..

この設計上の決定には理由があるのでしょうか?

どのように解決するのですか?

を作ろうとしていたからだろうと思います。 std::setstd::multiset を可能な限り同じにします。 (そして、明らかに count には完全に理にかなった意味があります。 std::multiset .)

個人的には、これは間違いだったと思います。

ということにしておけば、それほど悪くはないようです。 count が単なるスペルミスで contains というようにテストを書きます。

if (myset.count(element)) 
   ...

それにしても残念なことです。