部分模板专业化,用于展开特定大小的循环

时间:2018-05-21 13:41:07

标签: c++

我写了一个矩阵类,可以采用不同的大小。现在我想为特定尺寸展开循环。我该怎么做?

我似乎能够开始工作的唯一方法是2-d的儿童班。但我想避免这种情况,因为它会导致很多重复的代码。

例如:

#include <iostream>

template<class T, size_t M, size_t N>
class matrix
{
  matrix<T,M,N>& operator*= (const matrix<T,M,N> &B);
};

template<class T, size_t M, size_t N>
matrix<T,M,N>& matrix<T,M,N>::operator*= (const matrix<T,M,N> &B)
{
  // ...
  return *this;
}

int main()
{
  return 0;
}

现在我想为M = 2N = 2添加一个实现,我将展开所有循环以提高效率。

(我已经计划在之前的实现中展开,并且它确实似乎有意义,特别是对于此示例中的更复杂的操作。)

1 个答案:

答案 0 :(得分:4)

您可以将public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let char = string.cString(using: String.Encoding.utf8)! if (char.elementsEqual([0])) { print("Backspace was pressed") } else { print("WHAT DOES THE FOX SAY ?\n") print(char) } return true } 委托给重载的功能模板。 E.g:

operator*=