一个简单的错误是您应该测试不等于结束。
set<Cell*> cellSet;
Cell* cell = new Cell();
if (cellSet.find(cell) != cellSet.end()) // Test NOT EQUAL to end
{
// Found item in set.
}
但是您还应该注意,您不是在比较实际的 Cell 值,而是比较指向 Cell 对象的指针(这可能是您想要的,也可能不是您想要的)。通常在 C++ 中,您不倾向于将指针存储在容器中,因为指针没有隐含的所有权,但有时可以。
要实际比较对象,您需要使用 find_if() 并传递谓词(函子)。
struct PointerCellTest
{
Cell& m_lhs;
PointerCellTest(Cell* lhs): m_lhs(lhs) {}
bool operator()(Cell* rhs)
{
return lhs.<PLOP> == rhs.<PLOP>
}
};
if(find_if(cellSet.begin(),cellSet.end(),PointerCellTest(cell)) != cellSet.end())
{
// Found item in set.
}