在面向数字的语言(Matlab,Fortran)中,范围运算符和语义在处理多维数据时非常方便.例如:
A(i:j,k,:n) // represents two-dimensional slice B(i:j,0:n) of A at index k
Run Code Online (Sandbox Code Playgroud)
遗憾的是,C++没有范围运算符(:).当然它可以使用范围/切片仿函数进行仿真,但语义不如Matlab干净.我在C++中使用矩阵/张量域语言进行原型设计,我想知道是否有任何选项可以重现范围运算符.我仍然只想依赖C++/prprocessor框架.
到目前为止,我已经查看了可能是合适选项的增强波.
还有其他方法可以将新的非本地运营商引入C++ DSL吗?
我知道你不能添加新的operator.am专门寻找解决方法.我提出的一件事(非常丑陋的黑客,我不打算使用):
#define A(r) A[range(((1)?r), ((0)?r))] // assume A overloads []
A(i:j); // abuse ternary operator
Run Code Online (Sandbox Code Playgroud)