replace map::emplace with equiv. code cause gcc 4.7 doesn't have map::emplace
fixup problem compile