|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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个单位
求大佬解释,为什么会这样 |
|