Search code examples
c++dictionarypath-finding

c++ map/set iterator not dereferencable using .find


I've relatively new to using maps, and I'm currently getting the Debug Assertion Failed Expression: map/set iterator not dereferencable

When I hit retry it brings me to this section of code:

auto temp = mOpenMap.find(currentNode); temp->second = false;

I assume this has to do with the .find(currentNode) returning the end of the map, as it didn't find it, but the concerning part here is that doing my manual debugging I found that the only Node in the map indeed contained the exact parts of the currentNode I had it search for.

My map is this:

std::map<PathNode*, bool> mOpenMap

Optimistically what I would like it to do is search for the row and column to ascertain that it is looking at a node that has already been searched so that I can set the accompanying boolean to false.

What I'm wondering, is how do maps generally search for objects? Or better yet, how can I go about making the map search with a custom search?


Solution

  • You should check std::map::find does find the element before dereference the iterator:

    auto temp = mOpenMap.find(currentNode);
    if (temp != mOpenMap.end())  // check temp is pointing to underneath element of a map
    {
        temp->second = false;
    }