Oi pessoal,
Estou usando um boost::unordered_map <const char *,std::vector ><const char *> > para armazenar dados de um arquivo.
Meu problema é que a comparação entre chaves não parece estar funcionando como esperado..
Por exemplo, no arquivo tenho uma chave "tam_bloco" que é armazenada corretamente no mapa e seu vector associado também é adicionado sem problema.
Mas quando dou um get ("tam_bloco") nesse mapa, ele diz que não encontrou nada no mapa com essa chave...embora antes disso eu ter acabado de verificar
que a chave está sim no mapa, e com um vector com alguns elementos associado..
Pesquisando um pouco, descobri que poderia ser necessário informar uma função para o mapa usar para comparar as chaves..então passei a usar um
boost::unordered_map <const char *,std::vector ><const char *>, boost::hash<const char *>,eqstr >
Esse eqstr é isso aqui:struct eqstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) == 0;
}
};
O bizarro é que com esse código, executo várias vezes e obtenho resultados diferentes..às vezes ele acha a chave no mapa..e às vezes diz que não tem nada..o mesmíssimo código..sem alterar nada..mostra resultados diferentes a cada execução...como pode isso?
Cheguei a tentar usar uma std::equal_to<const char *> nesse mesmo mapa, no lugar de eqstr..mas aí ele nunca encontra a chave que tenho certeza que está lá...alguma luz?
)