【发布时间】:2017-12-25 18:45:26
【问题描述】:
我有一堆气体,每一种都有一些属性,例如密度、原子质量等。基本上我想要一个容器,我可以在我的程序中轻松地在其中添加命名气体。我可以使用以下类来做到这一点:
class gases
{
class gas
{
double mass;
double density;
};
gas h2o;
gas co2;
};
我猜可能更喜欢用派生类来做这件事?即从基类气体中导出 h2o?但我不完全确定如何实现它,我也不认为这就是我想要的。我不满意的是解决方案是我必须在类定义中声明我所有的气体。这样做对我来说会更直观(在伪代码中):
object gas (mass,density)
container gases
gases.append(h2o(m,rho))
cout << "the atomic mass of water is" << gases.h2o.mass << endl;
也就是说,我正在寻找一个可以添加命名对象的容器。
另一个不令人满意的解决方案是制作气体对象的矢量,但我必须记住添加气体的顺序。
【问题讨论】:
-
听起来你想要一个像std::map这样的关联容器。
-
std::map<std::string,gas> gases;应该可以工作。也许给出一个更好的定义你对“命名对象”的确切含义。 -
是的,
std::map似乎正在做我正在寻找的事情,谢谢。一个元问题:为什么这个问题会立即被否决?我并不是说不应该,我只是想了解原因,以便将来可以提出更好的问题。
标签: c++ object containers