我有一个矢量模式,其吸气剂如下所示:
vector<A>& getA() const { return a; }
vector<B>& getB() const { return b; }
vector<C>& getC() const { return c; }
...
我interesed具有某种功能一样vector<T>& getByName(string s) const
,这样我可以调用该函数是这样的:getByName("A")
,getByName("B")
等等。
我一直在使用一个无序地图试过,但我还没有找到任何合适的方法,使这样的工作线:unordered_map< string, vector<T> >
。
A,B,C ...是完全不同的结构,因此多态解决方案不是我想要的。
正如vector<T>
一个具有固定大小的容器(如果我没记错的话,是24个字节)一样,我不明白为什么无论向量的类型如何,映射都无法将这些字节存储在内存中。
由于vector是一个具有固定大小的容器(如果我没记错的话,它是24个字节),因此我不明白为什么无论vector的类型如何,映射都无法将那些字节存储在内存中。
由于C ++是一种强类型语言,和事实的类型vector<A>
,vector<B>
并且vector<C>
是相同的大小并不重要,因为它们是不同的类型。
(在大多数实现中)Apair<int16_t, int16_t>
的大小与相同int32_t
,但这并不能使它们互换。
您可能(我想)有一个map<string, variant<...>
或一个map<string, any>
,但这将需要您自己管理所有类型。
[后来]
我对具有某种功能感兴趣
vector<T>& getByName(string s)
这种函数的问题在于,您必须(在编译时)指定函数将返回的类型。您希望让返回类型由在运行时传递给函数的参数的值确定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句