我有一些已知类型的数据集,我想通过指定所需的类型将其转换为 stl 容器,如下所示:
Dataset dataset0(....);
Dataset dataset1(....);
Dataset dataset2(....);
int i = dataset0.convert<int>();
vector<int> vi = dataset1.convert<vector<int> >();
pair<vector<bool>, pair<bool, float> > complex = dataset2.convert<vector<pair<vector<bool>, pair<bool, float> >> >();
因此,我在我的 Dataset 类中创建了以下函数:
class Dataset
{
....
template<typename T>
T convert();
};
实现这样的基本类型很简单:
template<>
int convert<int>()
{
return int(/*implementation*/);
}
但问题是,我怎样才能为任何类型的 stl 容器做到这一点。像这样的东西:
template<>
vector<T> convert<vector<T> >() // ?? does not compile. where would T come from?
{
vector<T> ret;
for(/* Loop determined from data */)
{
ret .push_back(convert<T>())
}
return ret;
}