Vill du ha svar? Citera mig gärna.
C++ fråga om queues
Re: C++ fråga om queues
Ursprungligen inskrivet av Tallrot
Jag har en hel radda med queues som ska representera köer i ett snabbköp. Varje minut läggs det till ett slumpvist antal kunder och dessa kunder ska in i den queue som är kortast. Jag har gjort en rutin där jag matar ut varje queues antal till integers. Sedan körs det en jämförelse mellan varje integer för att hitta det minsta nummret. Dock så säger ju inte nummret vilket queue detta tillhör. Hur tar jag enklast reda på detta och matar in det nya antalet kunder där?
Ska jag använda pointers eller är jag helt fel ute?
Det beror lite på hur du håller reda på köerna. Har du en indexerbar behållare är det nog enklast att bara hålla reda på index till kortaste kön.
int get_index_of_shortest_queue(vector<queue_type> queues)
{
if (queues.empty())
return -1;
int shortest_index = 0;
for (int i = 1; i < queues.size(); i++)
if (queues[i].size() < queues[shortest_index].size())
shortest_index = i;
return shortest_index;
}
I annat fall kan du hålla en pekare eller iterator till kortaste kön. Pseudokod:
queue_type* shortest_queue = &queues[0];
for each queue in queues
if (queue.size() < shortest_queue->size())
shortest_queue = &queue;
Edit: Efter att ha funderat lite tycker jag att det kanske är enklast att returnera en pekare istället för index.
queue_type* get_shortest_queue(vector<queue_type> queues)
{
if (queues.empty())
return NULL;
queue_type* shortest_queue = &queues[0];
for (int i = 1; i < queues.size(); i++)
if (queues[i].size() < shortest_queue->size())
shortest_queue = &queues[i];
return shortest_queue;
}
queue_type* shortest_queue = get_shortest_queue(queues);
if (shortest_queue)
shortest_queue->push(new_customer);
else
no_queues_available();
Jag försöker få in det där sista kodstycket i min kod men hur anpassar jag den till namnen på mina queues? De heter ko1, ko2 osv ända till ko7
Ursprungligen inskrivet av Tallrot
Jag försöker få in det där sista kodstycket i min kod men hur anpassar jag den till namnen på mina queues? De heter ko1, ko2 osv ända till ko7
Det enklaste, och det jag rekommenderar, är ju såklart om du lägger dina köer i en container. Då blir det även mycket lättare att ha ett dynamiskt antal köer.
Vi antar att din kod i nuläget ser ut som
queue<Kund> ko1, ko2, ko3, ko4, ko5, ko6, ko7;
Du kan då istället skapa köerna som (jag skriver klass- och variabelnamn på engelska, men du kan fortsätta med svenska om du vill; engelska är dock de facto-språk inom programmering)
int number_of_queues = 7;
vector<queue<Customer> > queues;
for (int i = 0; i < number_of_queues; i++)
queues.push_back(queue<Customer>());
...
queue<Customer>* shortest_queue = get_shortest_queue(queues);
Du kommer åt dina köer genom queues[0], queues[1], o.s.v. Det är dock inte säkert att du verkligen behöver komma åt specifika köer på det sättet. I de funktioner jag postade behövs det inte, då allt sker genom ett godtyckligt index i (queues[i]).
Vill du av någon anledning inte byta ut ditt nuvarande system kan det vara enklast att helt enkelt skriva ut allt manuellt som nedan. Det går att skapa mappningar mellan tal och kö så att du, om du redan har kod för att hitta lägsta talet, kan få fram vilken kö det handlar om, men det är mer komplicerat.
queue<Kund>* kortast_ko = &ko1;
if (ko2.size() < kortast_ko->size())
kortast_ko = &ko2;
if (ko3.size() < kortast_ko->size())
kortast_ko = &ko3;
...
Vill du ha svar? Citera mig gärna.
- Idag Intel Arc får prestandalyft på 300 procent i Assassin's Creed: Unity 16
- Idag Sony läcker uppgifter i rättegång – så stort är Call of Duty 20
- Igår Nvidia: "Energieffektiva RTX 4060 sparar hundralappar" 39
- Igår MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare 68
- Igår Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer 15
- 3440 x 1440p Gamingdator för långsiktigt bruk ~20-25k
- Köpråd: Laptop för spelande - stram budget
- Hej, min fjärrkontroll till Google tv'n har pajat och kan inte synka kontrollen
- Bärbar dator för studier och enklare spel för fattig student - förslag i tråden.
- Köpråd för bärbar dator för 3D-arbete (Maya, Zbrush, Substance Designer, Houdini samt Unreal Engine)
- Komplett SweC-Bonanza 7 - Jul i Juli -edition - Diskussion106
- Varför kan man inte skilja på de och dem181
- Föra över mini DV till datorn via Firewire DV - USB8
- Köpråd: Laptop för spelande - stram budget13
- Portabel AC inför sommaren [Samlingstråd]4826
- Kommer flytta till stan och mitt wifi kommer säkert synas av hundratals människor varje dag. Vilken router ska jag köpa och hur ska den ställas in?13
- 3440 x 1440p Gamingdator för långsiktigt bruk ~20-25k2
- Starfield utvecklas med AMD:s välsignelse168
- PTS: "Övergång till IPv6 går trögt i Sverige"172
- BF2042 - Spelare söks11
- Säljes Herman Miller Aeron
- Säljes 2x Noctua NF-A14 Industrial PPC 2000rpm pwm chromax
- Säljes Switchar, RAM och vattenkylning
- Säljes Intel i5 9400f LGA1151-2
- Säljes Meta Quest 2 VR portabelt headset
- Säljes Komplett dator: Ryzen 7 3700x, GTX1080, 32GB DDR4, 1TB M.2 SSD + 1,5TB HDD, 750W PSU mm. Kan säljas med/utan GPU.
- Säljes Intel Core i5 13400F
- Säljes Gamingdator 4080 / 13700KF / 32GB DDR5
- Säljes I5 12500
- Säljes LG 27'' UltraGear 27GP950 4K Nano IPS 160 Hz HDMI 2.1
- Paypal vill ersätta lösenord med passkeys15
- Intel Arc får prestandalyft på 300 procent i Assassin's Creed: Unity17
- Youtube testar aggressiv taktik mot annonsblockerare102
- Sony läcker uppgifter i rättegång – så stort är Call of Duty20
- Nvidia: "Energieffektiva RTX 4060 sparar hundralappar"39
- MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare68
- Veckans fråga: Vilket operativsystem föredrar du?123
- Bilar med smarta inslag ger fler dumma fel78
- Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer15
- Nvidias nästa arkitektur för Geforce kommer år 202558
Externa nyheter
Spelnyheter från FZ
- Till slut – Football Manager-saves kommer kunna användas i nyare spel idag
- Quiz – Vad kan du om spöken? idag
- Dying Light 2-uppdatering i dag gör nätterna betydligt farligare idag
- Microsofts vd ser gärna att konsolexklusiviteter försvinner idag
- Bloober Team säger sig vara färdiga med psykologisk skräck idag