访问表示 2D 矩阵的 1D 存储数组
Access to 1D stored array representing 2D matrix
>我正在Excel VBA中创建2D方阵
Dim Matrix(0 To Nrows, 0 To Ncols) as double
然后我把它作为参数 ByRef 传递给函数库,
My_foo(Matrix(0,0))
调用C++代码。在C++代码中,我想访问矩阵以获取值并进行其他操作。为此,我将这些值读取为 1D 数组,因此我创建了一个索引 [R*Ncols + C],其中 R 和 C 是 2D 表示中的元素位置
void _stdcall My_foo(double* M, long Nrows, long Ncols){
double Value;
R = 10;
C = 0;
Value = M[R*Ncols + C];
}
在这一点上,我希望找到具有位置 (10,0( 的元素,但我找到了元素 (0,10(。似乎我的矩阵以倒置的列/行顺序存储。
设置像 [C*Nrows + R] 这样的索引并按列访问它就足够了。我试过这个,它有效,但它与许多博客和帖子相矛盾......
为什么?正常吗?
虽然 C/C++ 使用行主格式来表示多维数组,但对于其他语言,进行了不同的选择,因此 Excel VBA 使用列主格式也就不足为奇了,就像本论坛问题中也记录的那样。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- C++:将控制台输出存储在宏中更好吗
- C++使用数组作为多维数组,尽管将其初始化为带有指针的 1D
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 访问表示 2D 矩阵的 1D 存储数组
- 如何将元素的索引从2D数组存储到1D数组中,然后交换这些值
- 2D阵列和1D阵列存储比较
- XOR BITSET将2D焦点存储为1D
- 如何在AVR(例如:ATMega)或Arduino微控制器上制作2D PROGMEM阵列的1D PROGMEM数组(存储
- 高效访问存储为 1D 阵列的 3D 阵列
- 大型3D阵列的性能:连续1D存储与T***
- 将1D阵列存储到2D