我正在考虑使用 matlab 之类的索引来访问 C++ 数组,例如a[1 , :]
. 这将非常方便。
我重载了运算符 [],但似乎不可能有a[1, : ]
语法。
我想出的解决办法是写一个脚本,对C++源代码进行预处理,变成a[1, :]
一个C++函数,比如col(a, 1)
. 但这似乎很费力。
有没有人有更好的解决方案?谢谢!!
我正在考虑使用 matlab 之类的索引来访问 C++ 数组,例如a[1 , :]
. 这将非常方便。
我重载了运算符 [],但似乎不可能有a[1, : ]
语法。
我想出的解决办法是写一个脚本,对C++源代码进行预处理,变成a[1, :]
一个C++函数,比如col(a, 1)
. 但这似乎很费力。
有没有人有更好的解决方案?谢谢!!
我想出的解决办法是写一个脚本,对C++源代码进行预处理,把a[1, :]变成C++函数,比如col(a, 1)。但这似乎很费力。
它也很脆弱、容易出错、复杂化、混合任何错误和晦涩难懂。你最好使用宏(而且你永远不应该使用这样的宏)。
有没有人有更好的解决方案?
您是否考虑过简单地添加一个功能来满足您的需求?该语法不会使用数组索引,但是任何查看代码的人(包括两年后的您自己)都会熟悉它并且是显式的(因为函数名称会说明函数的作用)。
Boost 多数组提供 1 索引和列视图。range()
替换 matlab 运算符:
。
您还可以从文档中定义数组视图,如本示例中的
myarray[ boost::indices[range()][range() < 5 ][4 <= range().stride(2) <= 7] ]
相当于matlab
myarray(:,1:4,4:2:7)