马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是我写的一个模拟进程调度的c++代码。我用了vector代替队列进行了实现#include <iostream>
#include <algorithm>
#include <vector>
#include<time.h>
#define random(a,b) (((int)rand()/RAND_MAX)*(b-a)+a)
using namespace std;
typedef struct PCBnode
{
/*进程名称*/
string name = "0";
/*所需时间片*/
int RequireTimeSlice = 0;
/*进程状态,0为就绪态,1为运行态,2为完成态*/
int CurrentState = 0;
}PCB;
vector<PCB>ReadyQueue;
bool isEmpty()
{
return 0 == ReadyQueue.size();
}
void PrintInfo()
{
if (isEmpty())
{
cout << "空" << endl;
return;
}
cout << "就绪队列为:" << endl;
for (int i = 0; i < ReadyQueue.size(); i++)
{
PCB p = ReadyQueue[i];
cout << p.name << " 仍需时间片:" << p.RequireTimeSlice << "个单位" << endl;
}
return;
}
int main()
{
srand((int)time(0));
for (int i = 0; i < random(3, 10); i++)
{
PCB p;
p.name.assign("进程" + (char)(i + 49));
cout << p.name << endl;
p.RequireTimeSlice = random(2, 5);
ReadyQueue.push_back(p);
}
PrintInfo();
return 0;
}
运行结果中,进程的名字不能正常显示,显示为:
:\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector
\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector
Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector
就绪队列为:
:\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector 仍需时间片:2个单位
\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector 仍需时间片:2个单位
Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector 仍需时间片:2个单位
求大佬解释,为什么会这样 |