使用set.insert(key)作为条件?

Tom*_*mek 8 c++ conditional insert set

我试图set.insert (key)用作条件,如果正确插入密钥(意味着密钥不存在于集合中),那么它应该继续并执行某种代码.例如,类似于:

if (set.insert( key )) {
    // some kind of code
}
Run Code Online (Sandbox Code Playgroud)

这是允许的吗?因为编译器抛出了这个错误:

conditional expression of type 'std::_Tree<_Traits>::iterator' is illegal
Run Code Online (Sandbox Code Playgroud)

Cha*_*lie 14

采用单个键值的insert版本应返回a std::pair<iterator,bool>,其中bool指示是否进行了插入.值true表示已插入值,false表示该值已存在.所以你的条件看起来像这样:

if( set.insert( key ).second ) {
      // code
}
Run Code Online (Sandbox Code Playgroud)