Я пытаюсь определить, содержится ли объект в пределах std::set
. Согласно msdn (и другим источникам) функция set :: find должна возвращать end()
, если она не находит элемент, который вы попросили.Определение того, находится ли объект в std :: set
Однако, когда я реализую код, как показано ниже, set::find
возвращает ненужный (0xbaadf00d
).
set<Cell*> cellSet;
Cell* cell = new Cell();
if (cellSet.find(cell) == cellSet.end())
{
...
}
Я использую это правильно? Я работаю в Visual C++ 2005.
Да, видимо, это был, по-видимому, крушение из какого-то другого места, потому что после перемещения какого-то материала вокруг, кажется, теперь все нормально. –
Тот факт, что он произносимый и почти значимый, предполагает преднамеренную плохую ценность. По этой причине 0xdeadbeef был популярен как каноническое плохое или неинициализированное значение. –
Вы не имеете в виду, что код как отправленный должен * всегда * выполнять код внутри if? cellSet пуст (никакие вставки не были выполнены в опубликованном коде), и ячейка является новой (возможно, она не может быть в cellSet, даже если была выполнена вставка), поэтому cellSet.find (cell) должен * всегда * возвращать cellSet.end(). Просто пытаюсь быть ясным. – Naaff