繁体   English   中英

使用for循环C ++声明对象数组

[英]Declare an array of objects using a for loop c++

好的。 因此,我声明了一个对象数组,并使用以下代码手动定义了它们:

Object* objects[] =
{
    new Object(/*constructor parameters*/),
    new Object(/*constructor parameters*/)
}; 

无论如何,有没有使用某种循环(最好是for循环)来声明这些? 就像是:

Object* objects[] =
{
    for(int i=0; i<20; /*number of objects*/ i++)
    {
        new Object(/*constructor parameters*/);
    }
}; 

但是使用正确的语法?

我强烈建议使用标准库容器而不是数组和指针:

#include <vector>

std::vector<Object> objects;

// ...

void inside_some_function()
{
    objects.reserve(20);
    for (int i = 0; i < 20; ++i)
    {
        objects.push_back(Object( /* constructor parameters */ ));
    }
}

这提供了异常安全性,并减轻了堆的压力。

Object* objects[20];

for(int i=0; i<20; /*number of objects*/ i++)
{
    objects[i] = new Object(/*constructor parameters*/);
}

C ++中的点可以用作数组。 尝试这样的事情:

// Example
#include <iostream>

using namespace std;

class Object
{
public:
    Object(){}
    Object(int t) : w00t(t){}
    void print(){ cout<< w00t << endl; }
private:
    int w00t;
};

int main()
{
    Object * objects = new Object[20];
    for(int i=0;i<20;++i)
        objects[i] = Object(i);

    objects[5].print();
    objects[7].print();

    delete [] objects;
    return 0;
}

问候,
丹尼斯·M。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM