2

Type を指定せずにベクトルを動的に割り当てることは可能ですか?

すべての数値型をサポートする必要があるコンテナー クラスを作成する im は、最初の数値がプッシュされたときに後で指定されるコンテナー ベクトルを作成する必要があります。

まず、このコードは正しいですか?

private :
        vector<int> stk ;

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

2番目:タイプを指定せずに「stk」ベクトルを動的に割り当てる必要があります。

4

3 に答える 3

2

これが C++ コードの場合、テンプレートはコンパイル時に特殊化されます。ベクトル (またはその他のテンプレート クラス インスタンス) の割り当てを実行時まで遅らせることはできません。

回避策は、独自の数値クラス階層を基本クラス (たとえばCNumeric) でカスタマイズし、 のベクトルを割り当てることですCNumeric*。次に、ベクターは、独自のクラス階層内の任意の数値型に対応できます。しかしもちろん、この回避策は非常に非効率的です。

于 2013-04-04T19:42:46.623 に答える
0

通常、実行時に型を変更する必要はありません (C++ ではできません)。通常、プログラムの設計を変更する必要があります。

本当にこれを行いたい場合は、次のようにさまざまな数のいずれかを保持できるユニオン型を使用できます。

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

そして、A のベクトルを格納します。

于 2013-04-04T19:48:40.430 に答える