Функция выполняет итерацию по карте, если значение является строкой, она добавляет его к тексту строки, если это карта, она вызывает функцию и т. Д.
string functest(map<string, any> input)
{
string text;
std::map<std::string, std::any>::iterator it;
for (it = input.begin(); it != input.end(); it++)
{
std::string key = it->first;
auto value = it->second;
std::string type = value.type().name();
std::string stringType = typeid(std::string).name();
if (!stringType.compare(type))
{
text.append(any_cast<std::string>(value));
}
else
{
map<string, any> temp = any_cast<map<string, any>>(value);
text.append(functest(temp));
}
}
return text
}
std::map<std::string, std::any> map1;
std::map<std::string, std::any> map2;
std::map<std::string, std::any> map3;
map2["1"] = "test";
map3 = map2;
map1["test"] = map2;
map1["test2"] = map3;
functest(map1);
после второго вызова functest возвращаемся к первому звонку. Однако значение его (итератора) является концом, а не тем, на котором оно остановилось. как я могу это исправить?