41 lines
1.9 KiB
C++
41 lines
1.9 KiB
C++
#pragma once
|
|
#include <vector>
|
|
#include <map>
|
|
#include <string>
|
|
|
|
using std::vector;
|
|
using std::map;
|
|
|
|
class InnerSubstratesPool {
|
|
protected:
|
|
std::vector<float> subConcentrations; // Êîíöåíòðàöèè ñóáñòðàòîâ â êîíêðåòíîì îðãàíèçìå
|
|
std::map<std::string, int> subNamesMap; // Ñëîâàðü íàçâàíèé ñóáñòðàòîâ (çíà÷åíèå - íîìåð â ìàññèâå)
|
|
// P.S. Âîçìîæíî, ñëîâàðè ñòîèò ñäåëàòü ñòàòè÷åñêèìè, îíè âåäü äëÿ âèäà îäèíàêîâûå...
|
|
|
|
std::vector<float> regConcentrations; // Êîíöåíòðàöèè íåñóáñòðàòíûõ ðåãóëÿòîðîâ â êîíêðåòíîì îðãàíèçìå
|
|
std::map<std::string, int> regNamesMap; // Ñëîâàðü íàçâàíèé íåñóáñòðàòíûõ ñóáñòðàòîâ (çíà÷åíèå - íîìåð â ìàññèâå)
|
|
|
|
public:
|
|
InnerSubstratesPool(){};
|
|
InnerSubstratesPool(const vector<float>& _subs, const map<std::string, int>& _subNames)
|
|
: subConcentrations(_subs), subNamesMap(_subNames){}
|
|
|
|
InnerSubstratesPool(const vector<float>& _subs, const map<std::string, int>& _subNames,
|
|
const vector<float>& _regs, const map<std::string, int>& _regNames)
|
|
: subConcentrations(_subs), subNamesMap(_subNames),
|
|
regConcentrations(_regs), regNamesMap(_regNames){}
|
|
|
|
virtual void utilizeSubstrate(int num, float count) { subConcentrations.at(num) -= count; }
|
|
virtual void utilizeRegulator(int num, float count) { regConcentrations.at(num) -= count; }
|
|
|
|
virtual void utilizeSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) -= count; }
|
|
virtual void utilizeRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) -= count; }
|
|
|
|
virtual void addSubstrate(int num, float count) { subConcentrations.at(num) += count; }
|
|
virtual void addRegulator(int num, float count) { regConcentrations.at(num) += count; }
|
|
|
|
virtual void addSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) += count; }
|
|
virtual void addRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) += count; }
|
|
|
|
};
|