我想操作多维数组(矩阵)的队列,我对 std 不感兴趣,因为我的交叉编译器不完全支持 C++20
queue<float**> q;
float A[2][3] = {{0, 1, 2}, {10, 20, 30}};
printf("Value from array %f\n", A[1][1]);
q.push( (float**) A );
printf("Array A added to the queue \n");
printf("Value from the queue %f\n", q.front()[1][1]);
这是输出:
Value from array 10.000000
Array A added to the queue
Segmentation fault (core dumped)
我也尝试过
queue<float*> q;
queue<float*> q;
float A[2][3] = {{0, 1, 2}, {10, 20, 30}};
printf("Value from array %f\n", A[1][0]);
q.push( (float*) A );
printf("Array A added to the queue \n");
printf("Value from the queue %f\n", ((float**)q.front())[1][1]);
我得到了合理的结果
该错误是因为 float[2][3] 无法直接转换为 float**。float** 意味着它需要一个 float* 数组。 如果你想直接在队列中使用它,你可以使用指向数组本身的指针,并将队列声明为保存大小为[2][3]的数组的指针,格式如下
队列
queue<float(*)[3]> q;
float A[2][3] = {{0, 1, 2}, {10, 20, 30}};
printf("Value from array %f\n", A[1][0]);
q.push(A);
printf("Array A added to the queue \n");
printf("Value from the queue %f\n", q.front()[1][1]);
输出为 输出: