4

まず、私の例を以下に示します。

SymmetricMatrix<std::vector<int>, int> a;
SymmetrixMatrix<std::list<int>, int> b;
SymmetricMatrix<std::deque<double>, double> c;

SymmetricMatrix<std::vector<int> > d;
SymmetricMatrix<std::vector<double> > e;

したがって、2 つのテンプレート パラメータがあります。2 番目のデフォルト パラメータを記述した場合、オブジェクトを作成するときに名前を付ける必要はありません。しかし、どうすればそれを最初のパラメーターに調整できますか? たとえば、最初のパラメータがstd::vector<int>である場合、2 番目のパラメータは である必要があり、最初のパラメータが であるint場合、2 番目のパラメータは でstd::vector<double>ある必要がありますdouble

4

1 に答える 1

6
template<class DS, class T = typename DS::value_type>
class SymmetricMatrix
{
};

SymmetricMatrix<std::deque<double>> c;

DS (データ構造) に typedef value_type が含まれていると仮定します。そうしないと、コンパイルされません。DS にある限り、value_type を任意のものに置き換えることができます。

于 2013-08-15T12:25:17.913 に答える