C++ 动态分配向量

C++ 动态分配向量,c++,vector,C++,Vector,是否可以在不指定向量类型的情况下动态分配向量 我正在创建一个容器类,它应该支持所有的数字类型 它必须创建一个容器向量,当第一个数字被推入该容器向量时,将指定该容器向量的类型 首先,这个代码正确吗 private : vector<int> stk ; public : template <typename Typ> void push (Typ input) { vector<Typ> temp ;

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

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

首先,这个代码正确吗

private :
        vector<int> stk ;

public :
    template <typename Typ> 
    void push (Typ input) 
    {
        vector<Typ> temp ;
                    stk = temp ;
    }
private:
载体stk;
公众:
模板
无效推送(典型输入)
{
向量温度;
stk=温度;
}

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

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


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

您没有正确解释问题,或者您没有理解您真正需要的是什么

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

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

public :

    void push (Typ input) 
    {

         stk.push_back(input) ;

    }
}
模板
甲级{
私人:
载体stk;
公众:
无效推送(典型输入)
{
stk.推回(输入);
}
}

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

如果您真的想这样做,您可以使用一个联合类型,它可以容纳以下不同数量的内容之一:

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

然后存储一个a的向量。

如果希望
stk
为任何类型,则将该类作为模板。所有模板都必须在编译时求值。方法
push
的作用是什么?除了创建空向量并将其复制到
stk
之外。
输入
甚至没有被使用。@BarşUşaklı:tx获取答案。但是代码只是一个例子(是的,这就是为什么push方法没有做任何事情:)。正如我所说的,我真正的问题是动态分配stl容器(在本例中为向量)。我认为您需要将实际类型的元素存储在某个位置,每次访问union对象的值时,您需要切换类型以决定使用哪个字段。我认为编译器只是为包含的最大类型分配了足够的空间。那你需要照顾好自己。所以在屏幕上产生垃圾的方法是:a;a、 i=1;这就是重点。当您访问元素时,它可能会很混乱——您需要使用相当多的代码切换类型以提取所需的值。