动态分配向量

dynamically allocating a vector

本文关键字:向量 动态分配      更新时间:2023-10-16

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

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

首先这个代码是正确的吗?

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

第二:我需要动态地分配"stk"向量,而不指定类型。

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

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

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

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

template<typename Typ>
class A {
private :
        vector<Typ> stk ;
public :
    void push (Typ input) 
    {
         stk.push_back(input) ;
    }
}

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

如果你真的想这样做,你可以使用一个联合类型,可以保存不同数量的东西之一,像这样:

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

,然后存储a的向量