gpt4 book ai didi

C++进程调度问题

转载 作者:行者123 更新时间:2023-11-28 03:27:55 25 4
gpt4 key购买 nike

我正在编写实现多级反馈队列调度程序的代码。部分代码有不清楚的地方:

void Scheduler_MFQS :: fill_queue(int clk) {
list<Process>::iterator itr;
for(itr = processes.begin(); itr != processes.end(); itr++) {
if((itr -> has_arrived(clk)) && (!queues[0].contains(*itr))) {
Process tmp (*itr);
queues[0].add_process(tmp);
remove(processes.begin(), processes.end(), *itr);
}
}
}

这基本上只是在某种条件下将进程放入基本队列。但是我不知道 Process tmp (*itr); 是什么意思?但是,它是合法编译的。这是否意味着创建一个名为 tmp 的 Process 对象?但是下一个迭代器 (*i​​tr) 在 C++ 中是什么意思?

最佳答案

"Process tmp (*itr);" mean?

调用Process(const Process& &)复制构造函数创建tmp对象;

what is the next, iterator (*itr) mean in c++?

itr 是 std::list::iterator 类型,它是指向当前列表节点的指针。 *itr就是获取itr的内容,这是一个Process。

您的代码可以增强一点,演示如下:

   // list<Process>::iterator itr; // move this into for loop, narrow variable scope and lifetime
/*auto if C++11*/
processes.unique(); // you actually only want unique processes from list
for(list<Process>::iterator itr = processes.begin(); itr != processes.end(); ++itr)
^^ call preincrement, faster
{
if((itr -> has_arrived(clk)) /*&& (!queues[0].contains(*itr))*/) {
^^ process list contains unique item only, no need to compare
//Process tmp (*itr); comment out this line, save one object copy
queues[0].add_process(*itr);
//remove(processes.begin(), processes.end(), *itr);
// You don't need to clear item in the loop
}
}

processes.clear(); // or swap with an empty list
// std::list<Process> p2;
// p2.swap(ps);

关于C++进程调度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13437188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com