C++ boost性质映射的概念

C++ boost性质映射的概念,c++,boost,C++,Boost,我仍在努力理解boost property maps的以下方面: boost属性映射是否实际存储数据,或者数据存储在另一个数据结构中,而boost属性映射只是访问此数据的一种方式?换句话说,无论通过属性映射可以访问多少数据,属性映射的空间复杂度是否恒定 如果是这样的话,那么为什么它有一个put函数呢 空间复杂度绝对不是常数。奇迹是不可能的。存储的数据越多,需要的空间就越大 从我的观点来看,理解属性映射的最佳方法是包装。您添加了一个属性-您的类被另一个处理该属性的类包装起来。该包装类在模板实例化期

我仍在努力理解boost property maps的以下方面:

boost属性映射是否实际存储数据,或者数据存储在另一个数据结构中,而boost属性映射只是访问此数据的一种方式?换句话说,无论通过属性映射可以访问多少数据,属性映射的空间复杂度是否恒定


如果是这样的话,那么为什么它有一个put函数呢

空间复杂度绝对不是常数。奇迹是不可能的。存储的数据越多,需要的空间就越大

从我的观点来看,理解属性映射的最佳方法是包装。您添加了一个属性-您的类被另一个处理该属性的类包装起来。该包装类在模板实例化期间动态生成。我在调试器中查看了它们生成的内容。它显示了我定义的每个属性的继承层


存储数据的确切位置隐藏在实现中。这是他们设计的一部分,也是他们想要实现的一部分。这也为他们以这种或那种方式实现存储提供了一定的灵活性。

关键是这两种情况都要有一个通用的接口:一个具体的地图,或者存储在别处的数据。@Marc Glisse谢谢你的评论。那么属性映射的大小是恒定的?但是在这种情况下,为什么会有at put()函数呢?属性映射只是一个接口。它告诉你如何读(获取)或写(放置)东西。如果你看
http://www.boost.org/doc/libs/1_55_0/libs/property_map/doc/property_map.html
在该示例中,属性映射引用std::map,这是
put
写入的位置。