我想创建一个模板函数来读取文件中具有某个名称的数据集。 这些函数可以读取以下任何一种类型:float,double或long double。 我可以根据模板的参数来分配数据类型吗? 现在我只能使用:
function wrapSpans(start, end) {
var $cont = $('.span-container'),
//collection of all spans
$spans = $cont.children();
// loop all the containers and filter children to wrap
$cont.each(function() {
$(this).children('span').filter(function() {
var idx = $spans.index(this); // index within all spans collection
return idx >= (start - 1) && idx <= end;
}).wrapAll('<span class="wrapped">');
});
}
wrapSpans(3, 12)
答案 0 :(得分:1)
我不知道HDF5是什么,但看起来你可以做到以下几点:
template<typename T>
H5::DataType get_datatype_for();
template<>
H5::DataType get_datatype_for<float>() { return H5::PredType::NATIVE_FLOAT; }
然后在你的函数中:
H5::DataType dt = get_datatype_for<T>();
答案 1 :(得分:0)
添加额外的模板,这将改变功能
template <typename T>
class DataTypeFor
{
public:
}
template <>
class DataTypeFor<int>
{
public:
const H5::DataType value = H5::PredType::NATIVE_INT;
}
template <>
class DataTypeFor<float>
{
public:
const H5::DataType value = H5::PredType::NATIVE_FLOAT;
}
template <>
class DataTypeFor<double>
{
public:
const H5::DataType value = H5::PredType::NATIVE_DOUBLE;
}
template <typename T>
void gethdf(T * l, H5::H5File * file, char * name )
{
H5::DataSet dataset = H5::DataSet(file->openDataSet(name));
H5::DataType dt;
dt = DataTypeFor<T>::value;
...
dataset.read(l, dt);
}