簡體   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