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.

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