Structs without any methods should have a near 0 cost (some OS/compilers (used to?) pad them in weird ways, though, to align the members). Maps have a number of hidden internal variables and things. So I would bet the struct uses less space, marginally. It adds up if you have billions of them.
The question is moot; the two options are very different in terms of functionality.
The second is can be written as std::map< std::string, std::pair<std::string,std::string> >
The member and helper functions of std::pair<> provide a lot of convenience without adding any extra overhead over the struct obj