动态分配矢量

时间:2013-04-04 19:33:31

标签: c++ vector

是否可以动态分配向量而不指定其类型?

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

首先这段代码是否正确?

private :
        vector<int> stk ;

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

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

3 个答案:

答案 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的矢量。

相关问题