c++ - 创建大量对象 C++

标签 c++ arrays object

我需要创建一个大型直方图数组 (1000),其中每个直方图都略有不同。我是 C++ 的新手,关于如何执行此操作的第一个想法是使用 for 循环,它将创建直方图并将其添加到循环中的数组,但我遇到了变量名问题(我预料到了)。在循环中添加每个直方图时,如何使它们的变量名称不同?

抱歉,如果措辞不当。

最佳答案

听起来你想要的是一个直方图类,其中每个实例都有点不同。

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;
}

关于c++ - 创建大量对象 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11057227/

相关文章:

JavaScript for 循环打印意外的迭代器值

c++ - Qt 找不到子项目中的文件

algorithm - Mergesort 对三个输入数组进行排序

javascript - 从对象映射中获取键名称

python - Numpy 数组 - 使用 reshape 将多列堆叠为一列

c++ - 读写文件到数组

javascript - 我如何创建一个可重用的函数来为变量对象属性设置状态?

c++ - 在 C++ 中复制流

c++ - 使用integer_sequence 专门化模板。海湾合作委员会 vs MSVC

c++ - 使用函数模板初始化函数数组