如何动态存储对象(C ++)

时间:2018-11-21 22:13:50

标签: c++ data-structures

我是编程的初学者,我正在尝试寻找一种方法来创建鸽子类对象的动态存储。这是我的代码:

class pigeon {
public:
    pigeon(std::string nameI);
    void outputInfo();
private:
    std::string name;
};

我的想法是我希望能够添加一个新对象,有一个存储其信息的位置,然后能够添加另一个对象,依此类推。我不知道从哪里开始,甚至不知道要使用什么数据结构,我也没有存储对象的经验。

2 个答案:

答案 0 :(得分:0)

使用您的类的指针制作矢量:

std::vector<pigeon*> pigeons;

然后分配新的鸽子对象并将其推入载体:

pigeon * pig = new pigeon("pigeon");
pigeons.push_back(pig);

答案 1 :(得分:0)

正如评论中已经指出的那样,您最好使用一个容器来处理RAII/RDID-idiom之后的资源(“资源获取正在初始化” /“资源破坏正在删除”),因此您不必你得自己担心。这也是防止引发异常时资源泄漏的简单方法。

C ++标准库的常用容器之一是std::vector<>

您将以这种方式使用它(只是为了给您一个初步的想法,请参阅文档以获取进一步的说明和示例):

#include <vector>

// ...

{
    std::vector<pigeon> pigeons;

    pigeons.push_back("Karl");   // add three pigeons
    pigeons.push_back("Franz");  // at the end of the
    pigeons.push_back("Xaver");  // vector

    pigeons[1]; // access "Franz"

    for(auto /* maybe const */ &p : pigeons) {  // iterate over the vector
        // do something with pigeon p
    }

} // pigeons goes out of scope, its destructor is called which
  // takes care of deallocating the memory used by the vector.