Pereiti prie turinio

C++, STL konteineriai


Rekomenduojami pranešimai

Turiu vieną klasę, kurioje turiu vektorių sudarytų iš objektų. Dabar vektorių reikia pakeisti map'u, tačiau nelabai suprantu sintaksės map'o gaunu krūva errorų

 

#define NDEBUG

#include "Hospital.h"
#include "Doctor.h"
#include "Patient.h"
#include "Treatment.h"

#include <string>
#include <sstream>
#include <iostream>
#include <cstdlib>

#include <cassert>
#include <exception>
#include <stdexcept>
#include <vector>
#include <map>
#include <functional>
#include <algorithm>



//#define DEBUG
#define DEBUG_PREFIX "--> "

namespace MyHospital{

   using namespace std;

   // PRIVATE
class Hospital::ImplementationHospital {
	private:
		vector<Patient*> patients;
		map<Doctor*, int> doctors;
		vector<Treatment> treatments;
           friend class Hospital;
};

struct Printer {
	void operator() (const Treatment &tr){
		cout << tr << endl;
	}
} prt;
struct Verifier{
	Treatment operator() (Treatment tr){
	  tr.setIsVerified(1);
		return tr;
	}
} ver;


   // Constructor
   Hospital::Hospital()
       : implHospital(new ImplementationHospital())
   {
   }

   Hospital::~Hospital(){
       delete implHospital;
   }



void Hospital::addDoctor(const Doctor &d){
	// using variable to shorten the code

       /*vector<Doctor*> *ptr = &(implHospital->doctors);
    for(int i = 0; i < implHospital->doctors.size(); i++){
           if(*(ptr->at(i)) == d)
               return;
       }
       ptr->push_back(new Doctor (d));*/
         implHospital->doctors.insert(pair<Doctor, int>(d, 1));
}

void Hospital::addTreatment(const Treatment &t, const Patient &p, const Doctor &d){
	addPatient(p);
	int pos = getPatientPosition(p);
	Treatment treatm(t);
	treatm.setPatient(implHospital->patients[pos]); 
	int pos1 = getDoctorPosition(d);               // pakeisti
	treatm.setDoctor(implHospital->doctors[pos1]); // čia irgi reikia keisti
	implHospital->treatments.push_back(treatm);
}

bool Hospital::isDoctorAvailable() const {
    if (implHospital->doctors.size() == 0 ){
           return false;
    } else {
           return true;
    }
}


int Hospital::getDoctorPosition(const Doctor &d) const{
       for (int i = 0; i < implHospital->doctors.size(); i++)
           if (*(implHospital->doctors[i]) == d) {
               return i;
           }
       return NULL;
}


void Hospital::printDoctors(const Hospital &h){
       for (int i = 0; i < implHospital->doctors.size(); i++){
		cout << i+1 << ". " << *(implHospital->doctors[i]) << endl;
	}
}

Doctor Hospital::getDoctorAt(const int pos) const {
       if ((pos >= 0) && (pos < implHospital->doctors.size()))
           return *(implHospital->doctors[pos]);
       else
           throw out_of_range("Index out of bounds");
   }

}

 

Čia ne visas kodas, tiesiog palikau visas funkcijas susijusias su Doctor, kurios yra darytos pagal <vector>. Gali gal kas padėt? Jei reikės pilno kodo, PM

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...