确定对象是否在std :: set中

Kev*_*ity 3 c++ stl set

我正在尝试确定对象是否已包含在a中std::set.根据msdn(和其他来源),end()如果找不到你要求的元素,set :: find函数应该返回.

但是,当我实现如下代码时,set::find返回junk(0xbaadf00d).

set<Cell*> cellSet;

Cell* cell = new Cell();    

if (cellSet.find(cell) == cellSet.end())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我正确使用这个吗?我正在使用Visual C++ 2005.

Dav*_*itt 10

您发布的代码将始终执行代码if,并且0xbaadf00d 实现的"一个接一个"的标记.

  • 事实上它的可读性和几乎有意义表明了故意的坏价值.由于这个原因,0xdeadbeef作为规范的坏或未初始化的值很受欢迎. (2认同)

Ale*_*x B 5

当使用stl set时,我喜欢使用count函数来确定成员资格.我认为这使代码更容易阅读.

set<Cell*> cellSet;

Cell* cell = new Cell();    

if (cellSet.count(cell) == 0)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)