在C ++中声明大量的类实例

时间:2020-04-21 18:17:43

标签: c++

我正在上OS课,我的分配目标是比较1000个进程的FCFS和SJF调度算法的等待时间。我实际上不是在创建1000个进程,而是一个包含1000个随机pid,1000个随机到达时间和1000个随机突发时间的表,所有这些都具有整数值。我意识到,只需创建3个数组并为每个数组分配1000 rand()值,就可以轻松完成此操作,但是我还需要根据算法的到达时间和猝发时间对它们进行排序。

我的问题是,有没有办法用这些属性创建一个类,然后声明该类的1000个实例,而不必手工分别声明所有1000个呢?我知道您不能在c ++中动态声明变量,因此,如果有其他解决方法,我将非常有兴趣知道。或者,如果还有其他解决方案,例如链接数组等,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以声明类对象的std::vector<MyClass>。然后,当您初始化它时,将为向量中的每个对象调用默认构造函数(其数量以size_t参数的形式给出)。这是一个示例:

#include <iostream>
#include <vector>

static int dummy = 0;
class MyClass {
public:
    int test;
    MyClass() : test(dummy+=2) { 
        std::cout << "Constructor called!" << std::endl;
    }
};

int main()
{
    size_t n;
    std::cout << "How many objects? ";
    std::cin >> n;
    std::vector<MyClass> MyObjects(n); // Creates 'n' new objects and initializes them
    for (auto obj : MyObjects) {
        std::cout << obj.test << std::endl;
    }
    return 0;
}

如果您知道列表中在编译时有多少个对象,则可以使用std::array代替std::vector

    std::array<MyClass, 10> MyObjects;