1

C++ のプロジェクト (私はこの言語に比較的慣れていません) の場合、特定の単語と複数のクラスのカウントを格納する構造を作成したいと考えています。例えば:

struct Word
{
  string word;

  int usaCount     = 0;
  int canadaCount  = 0;
  int germanyCount = 0;
  int ukCount      = 0;
}

この例では、4 つのクラスの国を使用しました。実際、何百もの国のクラスがあります。

これに関する私の質問は次のとおりです。

  1. この国のリストを動的に生成する方法はありますか? (たとえば、読み取られる国のファイルがあり、それに基づいてこの構造体が生成されます)
  2. この構造体に適合するのは、クラスが検出された場合にカウントをインクリメントする関数である必要があります。これを「動的」にする方法もありますか。つまり、クラスごとに 1 つの関数を回避したいということです (例: incUsa()、incCanada()、incGermany() など)。
  3. 私はC++にあまり慣れていないので、これはイデオティックなアプローチですか?おそらく、問題を解決するためのより良いデータ構造または代替の (そしてより適切な) 方法があります。

前もって感謝します。

4

2 に答える 2

7

C++ ではclassstruct定義はコンパイル時に静的に作成されるため、たとえば、struct実行時に に新しいメンバーを追加することはできません。

動的データ構造の場合、次のような連想コンテナーを使用できますstd::map

std::map<std::string, int> count_map;
count_map["usa"] = 1;
count_map["uk"] = 2;

等...

count_mapの定義にメンバーとして含めることができますstruct Word:

struct Word
{
  std::string word;
  std::map<std::string, int> count_map;
};
于 2013-09-07T12:31:13.307 に答える
1

std::map を検討してください。国の地図を単語と数の地図にすることができます。または、国の地図への地図の言葉を数えます。国コードに列挙型を使用するか文字列を使用するかは、あなた次第です。

于 2013-09-07T12:38:06.733 に答える