如何在c++ mex文件中访问多维数组输入
how to access multidimensional array input in C++ mex file
我用c++编写了程序,需要在matlab中编写一个c++mex函数来传递输入参数并检索一些输出值。但是我在访问多维数组时遇到了一些问题。下面是我写的一段代码和错误信息。W的声明如下:
double **W;
W[i][j];
for (int i=0;i < 6; i++)
{
for (int j=0;j<6;j++)
{
//B[j + 6*i] = W[i][j];
B[j + 6*i] = W[i + 6*j];
}
}
和编译时,我得到以下错误消息:
cannot convert ‘double*’ to ‘double’ in assignment
表示为双** W的二维数组需要分配空间。首先,您需要分配每一行。下面的代码说明了这一点:
#include <iostream>
using namespace std;
int main() {
int rows = 6, cols = 6;
double **W;
W = new double* [rows];
// allocate each row
for (int i = 0; i < rows; i++) {
W[i] = new double [cols];
}
for (int i = 0; i < 6; i++) {
for (int j = 0; j<6; j++) {
// do work here
}
}
// clean up in the end:
if (W != nullptr) {
for (int i = 0; i < rows; i++) {
delete[] W[i];
}
delete[] W;
W = nullptr;
}
return 0;
}
以下代码是错误的:
double **W;
W[i][j];
声明W
为:
double W[i][j];
或者阅读:如何在c++中使用new.
声明2d数组你的2D数组访问语法
B[j + 6*i] = W[i + 6*j];
也是错误的
你想这么做吗?
B[j][6*i] = W[i][6*j];// if B is 2D array
或
B[j + 6*i] = W[i][6*j];// if B is 1D array
相关文章:
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 使用指针访问数组中的对象数据成员
- VTK 图像数据,访问数组中的 1 个图像
- 调用函数后无法访问数组
- 如何从地图访问数组的元素?
- 访问数组中的不同元素
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++基于1而不是0的访问数组,方法是在编译时移位
- 如何在主函数之外访问数组?
- 如何在 llvm 的 cpp api 中使用 CreateInBoundsGEP 来访问数组的元素?
- 访问数组中所有结构的成员
- C 是否每次访问数组时都复制元素?
- C++ 为什么访问数组中的元素会返回指针?
- 如何通过指针访问数组的元素
- 指针数组交换无需直接访问数组
- 直接从指针/地址访问数组的元素
- 我有一个 Qt 对象的 2d 数组,我已经用值播种了这些对象。如何访问数组中特定对象的值并更改它们?
- 如何使用 C+ 中的指针访问数组中的特定索引
- 通过两个下标访问数组成员