Boost BGL是否仍然需要属性映射?

Boost BGL是否仍然需要属性映射?,boost,boost-graph,Boost,Boost Graph,声明std::map M后,可以: 写入地图:M[“杰克”]=“323联合街” 从映射中读取:std::coutPropertyMaps主要是一个接口,用于抽象数据的写入和读取,并通过该接口隐藏存储的实现 您的界面有时需要访问数据,您不想强制用户使用这种存储。相反,有时您提供数据存储,但希望隐藏其实现。在这两种情况下,属性映射都提供了一个很好的解决方案,而标准库的AssociationSequence要求并不真正适合这种解决方案。PropertyMaps主要是一个接口,用于抽象数据的写入和读取,

声明
std::map M
后,可以:

  • 写入地图:
    M[“杰克”]=“323联合街”

  • 从映射中读取:
    std::cout
    PropertyMaps
    主要是一个接口,用于抽象数据的写入和读取,并通过该接口隐藏存储的实现


    您的界面有时需要访问数据,您不想强制用户使用这种存储。相反,有时您提供数据存储,但希望隐藏其实现。在这两种情况下,属性映射都提供了一个很好的解决方案,而标准库的AssociationSequence要求并不真正适合这种解决方案。

    PropertyMaps
    主要是一个接口,用于抽象数据的写入和读取,并通过它隐藏存储的实现


    您的界面有时需要访问数据,您不想强制用户使用这种存储。相反,有时您提供数据存储,但希望隐藏其实现。在这两种情况下,属性映射都提供了一个很好的解决方案,而标准库的AssociationSequence要求并不真正适合这种解决方案。

    以下是一些关于属性映射的背景知识,以补充pmr的答案

    正如我在评论中提到的。根据boost文档():

    “对属性映射的需求源于Boost Graph Library的设计,它的算法需要一个接口来访问连接到图中顶点和边的属性。在这种情况下,顶点和边描述符是属性映射的关键类型。”

    它们是一个接口,基本上是pmr所说的

    我没有发现任何与MSVC有关的信息

    后来,在历史部分,他们说:

    “属性映射接口起源于Dietmar Kühl关于泛型图算法的硕士论文中的数据访问器。属性映射思想也以装饰器的名义出现在早期版本的泛型图组件库(GGCL)中,即现在的Boost图库(BGL)。属性地图界面的主要动机是支持访问与图形中的顶点和边相关的数据,尽管属性地图的适用性超出了这一点。”


    您还可以查看Springer的Dietmar Kühl(或谷歌学者,点击“所有版本”查找pdf)。

    以下是物业地图的一些背景信息,以补充pmr的答案

    正如我在评论中提到的。根据boost文档():

    “对属性映射的需求源于Boost Graph Library的设计,它的算法需要一个接口来访问连接到图中顶点和边的属性。在这种情况下,顶点和边描述符是属性映射的关键类型。”

    它们是一个接口,基本上是pmr所说的

    我没有发现任何与MSVC有关的信息

    后来,在历史部分,他们说:

    “属性映射接口起源于Dietmar Kühl关于泛型图算法的硕士论文中的数据访问器。属性映射思想也以装饰器的名义出现在早期版本的泛型图组件库(GGCL)中,即现在的Boost图库(BGL)。属性地图界面的主要动机是支持访问与图形中的顶点和边相关的数据,尽管属性地图的适用性超出了这一点。”


    你也可以看看Springer的Dietmar Kühl(或谷歌学者,点击“所有版本”查找pdf)。

    答案很好。典型的用法是在PropertyMap中包装权重向量和顶点索引。这样,在使用PropertyMap运行图形算法之后,所有的权重都很好地存储在一个向量中。隐藏实现会给你更多的控制权。很好的答案。典型的用法是在PropertyMap中包装权重向量和顶点索引。这样,在使用PropertyMap运行图形算法之后,所有的权重都很好地存储在一个向量中。隐藏实现可以让您获得更多的控制“对属性映射的需求源于Boost Graph Library的设计,它的算法需要一个接口来访问连接到图中顶点和边的属性。在这种情况下,顶点和边描述符是属性映射的关键类型。“它似乎与MSVC没有任何关系。从属性映射的Boost文档中”对属性映射的需求来自于Boost图形库的设计,其算法需要一个接口来访问附着到图中顶点和边的属性。在这种情况下,顶点和边描述符是属性映射的关键类型。
    #if defined(BOOST_MSVC) && BOOST_MSVC <= 1300