我有一个矢量模式,其吸气剂是这样的:
vector<A>& getA() const { return a; }
vector<B>& getB() const { return b; }
vector<C>& getC() const { return c; }
...
我很喜欢具有某种功能,例如vector<T>& getByName(string s) const
,所以我可以这样调用该功能:getByName("A")
,getByName("B")
,依此类推。
我已经尝试过使用无序地图,但是我没有找到任何合适的方法来制作像这样的线:unordered_map< string, vector<T> >
。
A,B,C ...是完全不同的结构,因此多态解决方案不是我要寻找的。
由于vector<T>
是一个具有固定大小的容器(如果我没记错,则为24字节),所以我不明白为什么无论向量的类型如何,映射都无法将那些字节存储在内存中的某个位置。
由于向量是一个具有固定大小的容器(如果我没记错,则为24字节),所以我不明白为什么无论向量的类型如何,映射都无法将那些字节存储在内存中的某个位置。
因为C ++是强类型语言,并且类型vector<A>
,vector<B>
和vector<C>
是相同的size并不重要,因为它们是不同的types。
pair<int16_t, int16_t>
的大小与int32_t
相同(在大多数实现中,但这不能使它们互换)。>
您可能(我想)有一个map<string, variant<...>
或一个map<string, any>
,但这将需要您自己管理所有类型。
[稍后]
我很喜欢具有某种功能,例如
vector<T>& getByName(string s)
这种函数的问题是,您必须(在编译时)指定函数将返回的类型。您希望返回类型由运行时传递给函数的参数的值确定。