1

各ヒストグラムがわずかに異なるヒストグラムの大きな配列(1000)を作成する必要があります。私はC++が初めてで、これを行う方法について最初に考えたのは、ヒストグラムを作成してループ内の配列に追加するforループを使用することでしたが、変数名の問題に遭遇しました(私が期待していた)。ループに追加するときに、各ヒストグラムの変数名を異なるものにするにはどうすればよいですか?

言い方が悪かったらすいません。

4

1 に答える 1

4

必要なのは、各インスタンスが少し異なるヒストグラムクラスのようです。

class Histogram {
    unsigned m_count;
    std::string m_label;
public:
    Histogram(std::string label) : m_count(0), m_label(label) {}
    std::string & label () { return m_label; }
    std::string label () const { return m_label; }
    unsigned & count () { return m_count; }
    unsigned count () const { return m_count; }
};

(実際に入力を数値に分類できない限り)mapよりも内でこれらを管理する方が簡単かもしれませんが、各ヒストグラムには一意のラベルが必要です。vector

std::map<std::string, std::unique_ptr<Histogram> > histograms;

while (more_input()) {
    input = get_input();
    std::string classification = classify_input(input);
    if (histograms[classification] == 0)
        histograms[classification]
            = std::unique_ptr<Histogram>(new Histogram(classification));
    histograms[classification]->count() += 1;
}
于 2012-06-15T19:59:01.987 に答える