Suppression
- index libre directement dans le constructeur - Comportement de la méthode recuperationIndexLibre directement dans le constructeur
This commit is contained in:
parent
7d482d0afd
commit
51406b8cb5
2 changed files with 9 additions and 14 deletions
|
@ -17,9 +17,6 @@ class Organisme {
|
|||
|
||||
int m_index; // Location dans l'univers
|
||||
|
||||
// Renvoie un index libre
|
||||
int recuperationIndexLibre(int);
|
||||
|
||||
public:
|
||||
const int ID; // ID unique pour chaque organisme
|
||||
|
||||
|
|
|
@ -7,9 +7,17 @@ Organisme::Organisme(const int univers_ID, const int index): m_univers_ID(univer
|
|||
}
|
||||
m_total_ID = ID; // + 1 aux ID
|
||||
Univers::m_liste_univers[m_univers_ID].second.push_back(this);
|
||||
|
||||
// Supprime l'index maintenant pris par un organisme
|
||||
auto debut = Univers::m_liste_univers[m_univers_ID].first.begin();
|
||||
auto fin = Univers::m_liste_univers[m_univers_ID].first.end();
|
||||
auto it = std::find(debut, fin, index);
|
||||
if(it != fin) {
|
||||
Univers::m_liste_univers[m_univers_ID].first.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
Organisme::Organisme(const int univers_ID): Organisme(univers_ID, recuperationIndexLibre(univers_ID)) {}
|
||||
Organisme::Organisme(const int univers_ID): Organisme(univers_ID, Univers::m_liste_univers[univers_ID].first.back()) {}
|
||||
|
||||
Organisme::~Organisme(void) {
|
||||
// On remet notre index dans le vecteur des index vide
|
||||
|
@ -33,13 +41,3 @@ char Organisme::lettre(const int id) noexcept {
|
|||
std::pair<int, std::pair<int, int>> Organisme::position(const int id) const noexcept {
|
||||
return std::make_pair(m_index, std::make_pair(m_index / Univers::m_dimensions_univers[id].first, m_index % Univers::m_dimensions_univers[id].first));
|
||||
}
|
||||
|
||||
int Organisme::recuperationIndexLibre(const int universID_p) {
|
||||
if(Univers::m_liste_univers[universID_p].first.size() == 0) { // normalement c'est impossible que cette expection apparaisse
|
||||
throw std::domain_error("Impossible d'attribuer une position à l'organisme.");
|
||||
}
|
||||
int res = Univers::m_liste_univers[universID_p].first.back();
|
||||
Univers::m_liste_univers[universID_p].first.pop_back();
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
Reference in a new issue