2

是否可以在不指定类型的情况下动态分配向量?

我正在创建一个应该支持所有数字类型的容器类,它必须创建一个容器向量,该类型将在稍后将第一个数字推入其中时指定。

首先,这段代码是否正确?

private :
        vector<int> stk ;

public :
    template <typename Typ> 
    void push (Typ input) 
    {
        vector<Typ> temp ;
                    stk = temp ;
    }

第二:我不知何故需要在不指定类型的情况下动态分配“stk”向量。

4

3 回答 3

2

如果这是 C++ 代码,那么模板在编译时是专门的。您不能将向量(或任何其他模板类实例)的分配延迟到运行时。

一种解决方法是使用基类自定义您自己的数字类层次结构,例如CNumeric,并分配CNumeric*. 然后向量可以容纳您自己的类层次结构中的任何数字类型。但是,当然,这种解决方法可能非常低效。

于 2013-04-04T19:42:46.623 回答
1

你没有正确解释问题,或者你没有理解你真正需要什么。

如果我理解正确,这就是你要找的。

template<typename Typ>
class A {
private :
        vector<Typ> stk ;

public :

    void push (Typ input) 
    {

         stk.push_back(input) ;

    }
}
于 2013-04-04T19:45:24.037 回答
0

通常你不需要在运行时改变事物的类型(你不能在 C++ 中)。通常,您希望更改程序的设计。

如果你真的想这样做,你可以使用一个联合类型,它可以容纳不同数量的东西之一,比如这里:

union A {
  int i;
  float f;
  double d;
};

然后存储A的向量。

于 2013-04-04T19:48:40.430 回答