cin*_*mon 5 c++ c++-concepts c++20
我正在编写一个模板化函数 func ,它将矩阵作为输入。我提供了一个与 func 兼容的 SquareMatrix 类,但我希望其他矩阵实现与 func 兼容。因此,我定义了矩阵的概念。
template<typename T>
concept Matrix = requires (T a, int b, int c) {
{a(b, c)} -> std::convertible_to<double>;
{a.size1()}->std::convertible_to<size_t>;
{a.size2()}->std::convertible_to<size_t>;
};
Run Code Online (Sandbox Code Playgroud)
我在三个地方使用了这个概念。在我的 SquareMatrix.h 和 SquareMatrix.cpp 中,我使用它来定义一个模板化构造函数,该构造函数从另一个 Matrix 生成 SquareMatrix。在 func.h 中,我用它来定义模板化函数 func。func.h 导入 SquareMatrix.h。
我现在需要决定应该将用户定义的概念矩阵放在哪个文件中。我对这个决定有几个疑问:
根据我的经验,我的建议如下:
还有一个想法:那里有优秀的矩阵库。例如,检查 Armadillo、Eigen 或 Blaze。与其开发自己的矩阵库,不如使用库更方便,代码也更高效。