Когда я пытался передать карту пар строк, я чувствовал, что слишком много моего кода было жестко запрограммировано (строки используются в качестве ключей) и не очень элегантно.
Вот почему я хотел бы спросить, есть ли лучшая практика при желании поделиться картой.
Создание:
std::map<std::string, std::string> GetDataAsMap(){
std::map<std::string, std::string> data;
data["id"] = ReadProperty("id");
...
return data;
}
Расход:
auto dataMap = GetDataAsMap();
int id = dataMap["id"];
Вопросы:
std::map<std::string, std::string> GetDataAsMap(std::set<std::string>& keys){
std::map<std::string, std::string> data;
data["id"] = ReadProperty("id");
keys.insert("id");
...
return data;
}
Здесь я могу перебрать ключи в случае, если мне нужно только показать данные пользователю, но в остальном выиграно не так много
std::map<std::string, std::string> GetDataAsMap(){
std::map<std::string, std::string> data;
data[Keys::ID] = ReadProperty("id");
...
return data;
}
Есть ли лучшая практика или способ пойти лучше, чем я пробовал здесь?
Возьмите значения карты и распакуйте их в структуру. Необязательные значения могут быть выражены с использованием повышение :: опционально или же станд :: опционально в с ++ 17.
Других решений пока нет …