gpt4 book ai didi

c++ - 使用 vector 在每张病床上随机分配一名患者

转载 作者:搜寻专家 更新时间:2023-10-31 00:38:31 26 4
gpt4 key购买 nike

我对 vector 还很陌生。我有一个项目分配,我随机分配病人到床位。我需要做到每张床只能有一个病人。我的问题是如何让一名患者被随机分类并分配到一张病床上?

这是一个体面大小的程序,代码在多个文件中,请多多包涵。如果您不明白什么,请告诉我,我会尽力解决。

这是我每张床只分配一名患者。这个功能很可能是我的问题。

string Hospital::assignRandPatientToBed()
{
for(int i=0;i<2;i++)
{
for(unsigned int pi=0;pi<vBeds.size();pi++)
{
if(rand()%2)
{
//bigRand is a function: numberToString=9
vPatients[bigRand()%vPatients.size()].bedId; ///MORE THAN LIKELY WRONG
}
}
}
return "Random Beds assigned to Patients.\n";
}

我的主类的私有(private)部分,hospital.h

private:
int nextPatientIDtoBeUsed;
vector<Patient> vPatients;
map<int,int> PatientIDIndex;
map<string,int>PatientNameIndex;
map<string,int>PatientCategoryIndex;

int nextDoctorIDtoBeUsed;
vector<Doctor> vDoctors;
map<int,int> DoctorIDIndex;

int nextBedIDtoBeUsed;
vector<Bed> vBeds;
map<int, int> BedIDIndex;
};

Bed.h 的头文件

class Bed 
{
friend class Hospital;

public:

private:
int id;
string location;
string bedType;
int patientID;
};

patient.h 的头文件部分(我只为此目的使用私有(private)部分,它是一个大头文件)。

private:
int id;
vector<int> doctorIDs;
int bedId;
};

我必须修复的输出。床位是按500分配的,病人是8927号。

     500 CDDIUTEIOJ
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824
501 CMPSAJLFVG
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824
892795431 Muw, Eziel (174) 094-8824

它采用随机创建的名字并将其分配给床。对于输出,我选择将 5 名患者添加到 5 张床,但我在 2 之后将其切断,因为它只是重复了 5 次。

最佳答案

想法:

vBeds vector 开始并使用 random_shuffle function template从 c++ STL 以随机顺序遍历床。一旦你有一个新病人要分配,你就可以进行下一次迭代并使用这张床。您将希望通过维护明确的空闲床位列表 fbl 将床位列表返回到可用床位池中。

断言是您的迭代器中与 fbl 连接的剩余元素等同于所有可用床的池。如果您已经到达迭代器的末尾,您可以通过 fbl 重新创建它,然后将 fbl 设置为一个新的空列表。

关于c++ - 使用 vector 在每张病床上随机分配一名患者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17999291/

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