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;

所以有两个模板参数。如果我为第二个参数写了一个默认参数,我不必在创建对象时命名它。但是如何将其调整为第一个参数?例如,如果第一个参数是std::vector<int>,第二个应该是int,如果第一个是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,否则不会编译。你可以用任何你想要的替换 value_type,只要它在 DS 中。

于 2013-08-15T12:25:17.913 回答