Если у меня есть класс "узел", и я хочу включить все возможные (скажем, int) атрибуты. Сгруппировать их в одну карту хорошее решение.
Так что вместо:
class node{
int color;
int isVisited;
int weight;
public:
};
Чтобы иметь
class node{
map<string, int> property;
public:
setProperty(string property_label, int property_value)
{property[propery_label] = property_value;};
};
int main(){
node n;
n.setProperty("color",int(color::red));
n.setProperty("isVisited", 1);
n.setProperty("weight", 12);
}
EDIT:
Причина, по которой это делается, заключается в том, что при преобразовании графа некоторые локальные свойства (например, посещаемые при некотором обходе или помеченные) необходимы где-то в середине алгоритма, но эти локальные свойства не представляют внутреннее свойство узел, и не нужны в выводе. Кроме того, иногда мне нужно больше, чем одна переменная isVisited.
Еще одна причина - сделать класс "узел" универсальным и открытым для новых атрибутов, которые в конечном итоге могут понадобиться.