我目前必须优化其他程序员的代码。他给我留下了许多模板类,我想利用Intels IPP-Library中的函数来加快计算速度。问题在于,大多数时候这些功能都要求您知道所使用的数据类型。因此,我想重写模板,以便在可以优化操作的情况下使用专用代码。万一不能,应该回到原始代码。
问题是我需要检查是否正在使用某种数据类型,而我不知道该怎么做。
一个例子。我想做这样的事情:
template < class Elem > class Array1D
{
Array1D<Elem>& operator += (const Elem& a)
{
if (typeof(Elem) == uchar)
{
// use special IPP operation here
}
else
{
// fall back to default behaviour
}
}
有关如何执行此操作的任何想法?最好没有其他库的帮助。
谢谢
最佳答案
使用特化:
template<>
class Array1D<uchar>
{
Array1D<uchar>& operator += (const uchar& a)
{
// special behaviour
}
};
但是,如果您不想重写Array1D中的所有其他函数,请考虑对operator + =使用重载。