- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在研究一个医院模拟程序,其中患者按严重程度排序并放置在相应的队列中。当我调试它时,一切似乎都工作正常,但由于某种原因,它在随机循环后停止。我没有收到任何错误——我的程序只是在循环中退出。什么会导致这种情况发生?
priority_queue<Hospital_Visit> queue1, queue2;
vector<int> nurse_time_vector, doctor_time_vector;
vector<Hospital_Visit> current_hospital_visit;
for (int i = 0; i < master_hospital_visit.size(); i++){ //make a copy of the master_hospital_visit to manipulate
current_hospital_visit.push_back(master_hospital_visit[i]);
}
if (num_nurses>0)
nurse->set_minute(0);
if (num_doctors>0)
doctor->set_minute(0);
int treatment;
map<string, vector<Hospital_Visit>>::iterator it;
srand(time(NULL));
bool hour_changed = true;
do{
if (hour_changed){ //update queues with new hour's patients added to end
for (int i = 0; i < current_hospital_visit.size(); i++){
if (current_hospital_visit[i].get_hour() > current_hour){
break;
}
if (current_hospital_visit[i].get_hour() <= current_hour)
{
if (current_hospital_visit[i].get_severity() <= 10) // For nurses
{
queue1.push(current_hospital_visit[i]);
current_hospital_visit.erase(current_hospital_visit.begin() + i);
}
else // for doctors
{
queue2.push(current_hospital_visit[i]);
current_hospital_visit.erase(current_hospital_visit.begin() + i);
}
}
}
}
hour_changed = false;
if (nurse->get_minute() != nurse->get_max_time() && queue1.size() != 0 && queue1.top().get_hour() <= current_hour && num_nurses > 0)
{
treatment = (rand() % 11) + 1;
queue1.top().set_treatment_time(treatment);
queue1.top().set_day(current_hour / 24);
queue1.top().set_hour(current_hour);
nurse->set_minute(treatment);
queue1.top().set_wait_time(current_hour - queue1.top().get_hour() + treatment);
queue1.top().set_medic(false);
queue1.top().set_severity(queue1.top().get_severity() - (current_hour - queue1.top().get_hour()));
it = patients_map.find(queue1.top().get_name());
if (it == patients_map.end())
{
vector<Hospital_Visit> patient_visits;
patient_visits.push_back(queue1.top());
patients_map.insert(make_pair(queue1.top().get_name(), patient_visits));
}
else
{
it->second.push_back(queue1.top());
}
queue1.pop();
}
else if (queue1.size() == 0 && num_nurses > 0) //was !=
{
nurse_time_vector.push_back(nurse->get_max_time() - nurse->get_medic_hour());
}
if (doctor->get_medic_hour() != doctor->get_max_time() && queue2.size() != 0 &&
queue2.top().get_hour() <= current_hour && num_doctors > 0)
{
treatment = (rand() % 21) + 1;
queue2.top().set_treatment_time(treatment);
queue2.top().set_day(current_hour / 24);
queue2.top().set_hour(current_hour);
doctor->set_minute(treatment);
queue2.top().set_wait_time(current_hour - queue2.top().get_hour() + treatment);
queue2.top().set_medic(true);
queue2.top().set_severity(queue2.top().get_severity() - (current_hour - queue2.top().get_hour()));
it = patients_map.find(queue2.top().get_name());
if (it == patients_map.end())
{
vector<Hospital_Visit> patient_visits;
patient_visits.push_back(queue2.top());
patients_map.insert(make_pair(queue2.top().get_name(), patient_visits));
}
else
{
it->second.push_back(queue2.top());
}
queue2.pop();
}
else if (doctor->get_minute() != doctor->get_max_time() && queue1.size() != 0 && queue2.size() == 0
&& queue1.top().get_hour() <= current_hour && num_doctors > 0){
treatment = (rand() % 21) + 1;
queue1.top().set_treatment_time(treatment);
queue1.top().set_day(current_hour / 24);
queue1.top().set_hour(current_hour);
doctor->set_minute(treatment);
queue1.top().set_wait_time(current_hour - queue1.top().get_hour() + treatment);
queue1.top().set_medic(true);
queue1.top().set_severity(queue1.top().get_severity() - (current_hour - queue1.top().get_hour()));
it = patients_map.find(queue1.top().get_name());
if (it == patients_map.end())
{
vector<Hospital_Visit> patient_visits;
patient_visits.push_back(queue1.top());
patients_map.insert(make_pair(queue1.top().get_name(), patient_visits));
}
else
{
it->second.push_back(queue1.top());
}
queue1.pop();
}
if ((doctor->get_minute() <= doctor->get_max_time() + 20 && doctor->get_minute() >= doctor->get_max_time()-5)
|| (queue1.size() == 0 && queue2.size() == 0))
{ // if the max time is reached or the queues are empty, then change the hour
current_hour++;
hour_changed = true;
if (num_nurses>0)
nurse->set_minute(0);
if (num_doctors>0)
doctor->set_minute(0);
}
} while (current_hour != 169);
最佳答案
看看这个循环:
for (int i = 0; i < current_hospital_visit.size(); i++){
...
if (...)
{
current_hospital_visit.erase(current_hospital_visit.begin() + i);
}
...
}
它不会检查每个元素。假设 i
为 3
,并且 if
条件为真。元素 3
被删除,使元素 4
成为新元素 3
。但在下一次迭代中,i
递增并变为 4
,因此永远不会测试这个新元素 3
。
一种可能的解决方案是在删除某些内容时递减 i
:
for (int i = 0; i < current_hospital_visit.size(); i++){
...
if (...)
{
current_hospital_visit.erase(current_hospital_visit.begin() + i);
i--;
}
...
}
关于c++程序停止中间循环没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27341563/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!