【发布时间】:2013-05-02 13:25:00
【问题描述】:
我正在实现一个 C++ 表达式模板库。我已经设置了一个适当的SubMatrixExpr 类来收集矩阵中的元素,从而启用类似
B = SubMatrix(A,1,3,2,10);
相当于Matlab的
B = A(1:3,2:10);
当然,Matlab 的语法比我的要舒服得多。所以我的问题是
有没有可能在 C++ 中设置 Matlab 的冒号: 运算符?
提前非常感谢您。
【问题讨论】:
-
没有。 C++ 中没有冒号运算符。但是,您可以重载其他一些运算符来执行此操作。
-
您将无法获得您在 Matlab 中的确切语法,但您可以通过重载
Matrix类的operator()来更接近,这样它就可以将两个范围作为操作数。然后您就可以编写B = A(range(1,3), range(2,10)),它可能比SubMatrix版本更具可读性。 -
@LucTouraille 对
range()部分的良好提示,我现在将其放入我的答案中。谢谢。 -
@LucTouraille 谢谢。您实施
Range的建议对我来说非常有效。
标签: c++ expression metaprogramming