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 に答える