Search code examples
c++multimap

inserting one map into another map of a same multimap gives seg fault


I have the following code declaration of multimap:

typedef std::multimap<std::string,std::string> rd;

std::multimap<std::string, rd> Rdout;
std::multimap<std::string, rd> Rdin;

I use the following to find two map iterators:

std::multimap<std::string,rd>:: iterator ot =
Rdout.find(B.getName().str()+B.getParent()->getName().str());

std::multimap<std::string,rd>:: iterator it = 
Rdin.find(B.getName().str()+B.getParent()->getName().str());

When I try to insert inner map of Rdin into Rdout which are of same type I get segfault

if(!it->second.empty())
{
    ot->second.insert(it->second.begin(), it->second.end());
}

Appreciate your help thanks!!


Solution

  • if(!it->second.empty())
    {
        ot->second.insert(it->second.begin(), it->second.end());
    }
    

    should be

    if(it != Rdin.end())
    {
        ot->second.insert(it->second.begin(), it->second.end());
    }