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
|
int m_index; // Location dans l'univers
|
||||||
|
|
||||||
// Renvoie un index libre
|
|
||||||
int recuperationIndexLibre(int);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const int ID; // ID unique pour chaque organisme
|
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
|
m_total_ID = ID; // + 1 aux ID
|
||||||
Univers::m_liste_univers[m_univers_ID].second.push_back(this);
|
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) {
|
Organisme::~Organisme(void) {
|
||||||
// On remet notre index dans le vecteur des index vide
|
// 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 {
|
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));
|
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