是否可以动态分配向量而不指定其类型?
我正在创建一个应该支持所有数字类型的容器类 它必须创建一个容器向量,当第一个数字被推入时,该类型将在稍后指定。
首先这段代码是否正确?
private :
vector<int> stk ;
public :
template <typename Typ>
void push (Typ input)
{
vector<Typ> temp ;
stk = temp ;
}
第二:我不知何故需要动态分配“stk”向量而不指定类型。
答案 0 :(得分:2)
如果这是C ++代码,则编译时模板专用。您不能延迟将矢量(或任何其他模板类实例)分配给运行时。
解决方法是使用基类(例如CNumeric
)自定义您自己的数字类层次结构,并分配CNumeric*
的向量。然后,向量可以容纳您自己的类层次结构中的任何数字类型。但是,当然,这种解决方法可能非常效率低下。
答案 1 :(得分:1)
您没有正确解释问题,或者您还没有理解您真正需要的内容。
如果我理解正确,这就是你要找的东西。
template<typename Typ>
class A {
private :
vector<Typ> stk ;
public :
void push (Typ input)
{
stk.push_back(input) ;
}
}
答案 2 :(得分:0)
通常,您不需要在运行时更改事物的类型(并且您不能在C ++中)。通常,您希望更改程序的设计。
如果你真的想这样做,你可以使用一个联合类型,它可以容纳一个不同数量的东西,如:
union A {
int i;
float f;
double d;
};
然后存储A的矢量。