Я определил карту,
static std::map<std::string, std::string> myentries;
записи заполняются динамически через строки ключей и значений, количество элементов и последовательность являются динамическими.
myentries[key] = value;
теперь мне нужно извлечь 7 параметров из карты, ключи которых известны мне, например, hostName
, port
, user1
, user2
, user3
один из способов — получить доступ ко всем 5 параметрам и иметь 5 операторов вроде
std::map<std::string, std::string>::iterator iterparam1 = entries_.find("hostName");
и доступ iterparam1->second.data()
, iterparam2->second.data()
..
Этот простой подход делает свою работу, поскольку я знаю подмножество из карты, однако я хотел бы обсудить, есть ли альтернатива этому пути с преимуществами и недостатками текущих стихов предлагаемый / альтернативный подход.
Спасибо за ваше время 🙂
Я полагаю, что неправильный подход заключается в том, что вы решили сохранить параметры хоста. Лучше хранить структуру типа Host (пользовательская структура), чем набор пар ключ-значение. В противном случае в какой-то момент в вашем коде вам придется каким-то образом сопоставлять имена ключей с реальными полями в структуре, что сделает код трудным для обслуживания и менее безопасным. Не пытайтесь работать вокруг классов.
Других решений пока нет …