我需要创建一个大型数组(1000)的直方图,其中每个直方图略有不同。我是C ++的新手,我第一次想到如何做这个是使用for循环,它将创建直方图并将其添加到循环中的数组,但我遇到了变量名称的问题(我预期)。在循环中添加它们时,如何使每个直方图的变量名称不同?
对不起,如果措辞不好。
答案 0 :(得分: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;
}