1

我有一个容器类,我们称它为 TestClass 和一个通用属性类,Property。

现在我需要做的是允许 TestClass 的不同实例具有多个“属性”。这些属性将动态添加,并且可以在运行时定义新属性。

处理这个问题的简单方法似乎只是使用一个存储 Property 类的各种实例的向量之类的东西。

class TestClass{
   public:
      std::vector<Property> properties ;
      addProperty(Property newProperty) {....}
      getProperty(String name) {....}
} ;

class Property{
 String name ;
 double value ;
 Definition definition ;
 ....
};

class Definition {
 ....
} ;

但是,我在程序的其他部分需要做的是有一种有效的方式从 TestClass 中说 getPropertyValue("X") ...首先检查它是否是现有属性,然后检索该属性的值... .以及各种其他操作。

使用幼稚的方法会导致检查特定属性的方法非常低效(基于属性名称的猜测)。

4

2 回答 2

1

您可以使用std::map,将属性名称作为键,将属性作为值。与您的幼稚方法非常相似,但要快得多。

于 2013-08-24T12:48:21.897 回答
0

您应该使用地图或其他关联数组容器。就像是:

class TestClass{
   public:
      std::map<string, double> properties ;
      ....

将允许您有效地检查现有属性。

于 2013-08-24T12:50:40.127 回答