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在 a而不是 a中管理这些可能更容易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 回答