我正在上OS课,我的分配目标是比较1000个进程的FCFS和SJF调度算法的等待时间。我实际上不是在创建1000个进程,而是一个包含1000个随机pid,1000个随机到达时间和1000个随机突发时间的表,所有这些都具有整数值。我意识到,只需创建3个数组并为每个数组分配1000 rand()值,就可以轻松完成此操作,但是我还需要根据算法的到达时间和猝发时间对它们进行排序。
我的问题是,有没有办法用这些属性创建一个类,然后声明该类的1000个实例,而不必手工分别声明所有1000个呢?我知道您不能在c ++中动态声明变量,因此,如果有其他解决方法,我将非常有兴趣知道。或者,如果还有其他解决方案,例如链接数组等,我将不胜感激。
答案 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;