std::map::insert
принимает один аргумент: пара ключ-значение, поэтому вам нужно будет использовать:
mapa.insert(std::make_pair(p1, "Manzana"));
Вы должны использовать std::string
вместо строк C в ваших типах. Как и сейчас, вы, скорее всего, не получите ожидаемых результатов, потому что поиск значений на карте будет выполняться путем сравнения указателей, а не сравнения строк.
Если вы действительно хотите использовать строки C (что, опять же, не следует), тогда вам нужно использовать const char*
вместо char*
в ваших типах.
И вообще, как я могу использовать любую структуру (объекты, структуры и т. Д.) В качестве ключа на карте?
Вам необходимо перегрузить operator<
для типа ключа или использовать собственный компаратор.