vector<process>::iterator it = que.begin(); for(vector<process>::iterator iter = que.begin();iter!=que.end();iter++) { if((*iter).runtime!=0) { it = iter; break; } } //该进程正在执行, cout<<"进程" <<(*it).id<<"正在执行........."<<endl; (*it).state = 'E'; //改变该进程的状态为“执行” (*it).runtime --; // 该进程的的运行时间减 1 (*it).prior --; // 该进程的的优先级减 1 output(); if((*it).runtime == 0) { finish ++; cout<<"进程" <<(*it).id<<"已经完成"<<endl; (*it).state = 'F'; //改变该进程的状态为“完成” output(); } }
时间: 2023-12-06 14:39:59 浏览: 27
这段代码是一个用于模拟进程调度的程序,它通过遍历一个存储进程信息的队列来找到当前正在执行的进程,并将其状态设置为“执行”,然后将其运行时间和优先级分别减 1,最后输出调度结果。如果该进程的运行时间减至 0,则将其状态设置为“完成”,并将完成的进程数加 1,并再次输出调度结果。
需要注意的是,这段代码中使用了迭代器来遍历队列,并且在找到第一个运行时间不为 0 的进程后就退出了循环,这意味着如果有多个运行时间不为 0 的进程,只有第一个会被执行。此外,代码中没有考虑进程优先级相同时的情况,也没有考虑进程的到达时间和调度算法等因素,因此仅仅是一个简单的模拟程序。
相关问题
list<int>::iterator iter=s.begin()
这是一个C++的语句,它定义了一个名为`iter`的迭代器,它指向类型为`list<int>`的容器`s`的第一个元素。
具体地,`list<int>`是一个STL容器,它可以存储整数类型的元素。`s.begin()`是容器`s`的起始迭代器,指向容器`s`的第一个元素。因此,这行代码的作用是将`s`的起始迭代器赋值给`iter`,使得`iter`也指向容器`s`的第一个元素。这样做的目的是可以通过`iter`来遍历容器`s`中的元素。
需要注意的是,`list<int>::iterator`是一个迭代器类型,它指向容器`s`中的一个元素。如果要遍历容器`s`中的所有元素,可以使用`for`循环结合迭代器:
```
for(auto iter=s.begin();iter!=s.end();++iter){
// do something with *iter
}
```
这个循环会从容器`s`的第一个元素开始遍历,直到遍历到容器`s`的最后一个元素。在循环体内部可以使用`*iter`来访问当前迭代器指向的元素。
vector<string>::iterator itr = name.begin()
这是一个C++代码语句,它的作用是创建一个指向 vector<string> 容器中第一个元素的迭代器 itr。
其中,name 是一个 vector<string> 类型的容器,它存储了多个字符串元素。begin() 是 vector 类的成员函数,用于返回指向第一个元素的迭代器。因此,这个语句实际上是将 name 容器的迭代器赋值给了 itr。通过 itr 可以遍历 name 容器中的所有元素。