Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中数组的赋值+;像Matlab?_C++_Arrays_Matlab_Matrix_Cuda - Fatal编程技术网

C++ C+中数组的赋值+;像Matlab?

C++ C+中数组的赋值+;像Matlab?,c++,arrays,matlab,matrix,cuda,C++,Arrays,Matlab,Matrix,Cuda,因此,在MATLAB中,如果我制作一个nxnxnx6维矩阵,我可以将值按6组分配给矩阵,如下所示: myMatrix(1,1,1,1,:) = [69, 3, 864, 21, 95, 20]; 在6?组中,有类似的方式写入C++中的 n×x n x x 6 < 维矩阵吗? 另外,是否有类似的方法将6个元素设置为另6个元素,即myArray(N,N,N,8,:)=myArray(N,N,N,6,:) (请不要使用std::vector解决方案-需要将矩阵保持为数组形式,因为现有代码是使用c++

因此,在
MATLAB
中,如果我制作一个
nxnxnx6
维矩阵,我可以将值按6组分配给矩阵,如下所示:

myMatrix(1,1,1,1,:) = [69, 3, 864, 21, 95, 20];

在6?

组中,有类似的方式写入C++中的<代码> n×x n x x 6 < <代码>维矩阵吗? 另外,是否有类似的方法将6个元素设置为另6个元素,即myArray(N,N,N,8,:)=myArray(N,N,N,6,:)


(请不要使用std::vector解决方案-需要将矩阵保持为数组形式,因为现有代码是使用
c++/CUDA
为数组构建的,非常复杂)

您可以像在matlab中一样分配: 假设你有一个向量:

std::vector<std::vector<std::vector<std::vector<std::vector<int>>>>>> myVector;
std::vector>myVector;
假设已正确初始化,如下所示:

myVector(N, std::vector<std::vector<std::vector<std::vector<int>(N, std::vector<std::vector<std::vector<int>(N, std::vector<std::vector<int>(N, std::vector<int>(6, 0)))));
std::vector<int> yourTempVector(6, someNumber);
myVector[1][1][1][1] = yourTempVector;
myVector(N,std::vector与
#include
,您可以使用
std::copy

int myMatrix[N][N][N][N][6];
const int src[6] = {69, 3, 864, 21, 95, 20};

std::copy(std::begin(src), std::end(src), myMatrix[0][0][0][0]);
因此,
myArray(N,N,N,8,:)=myArray(N,N,N,6,:)
的等价物是:

std::copy(std::begin(myMatrix[N-1][N-1][N-1][5]),  // Source start
          std::end(myMatrix[N-1][N-1][N-1][5]),    // Source end
          std::begin(myMatrix[N-1][N-1][N-1][7])); // Dest start

请注意,C/C++中的索引从
0
开始,而不是从
1

开始。我不能在程序中使用std::vectors,因为我实际使用的是CUDA/C++,它禁止这些构造:(@约旦代码> CUDA < /Cord>不能使用<代码> STL>代码>类型?您必须使用数组吗?我不知道STL是什么,但我更喜欢使用数组,因为这意味着对已经非常复杂的程序进行最小的重构。<代码> STL> /Cord>类型是标准的C++库类型,如“代码>矢量< /代码>和<代码> MAP< /Cord>。什么使C++很好。你可以使用<代码> CUDA < /Cube >特定类型,如这里所示:谢谢本,我将把它保留为计划B。你可能想说明为什么你不能使用<代码> STL< /COD>解决方案。你想让它与任何数据类型(数组)一起工作吗?您现在正在使用,或者可以用其他数据类型替换它,只要矩阵元素存储在连续内存中?数组是首选的,因为我是noob编码器,而且我对它们很熟悉。在没有
stl
的情况下,一种方法是使用表达式模板,请参见。您可能希望了解一下哪个实现s使用CUDA的表达式模板。对于建议使用
stl
的人:
stl
在CUDA内核代码中不受支持。请参阅和.Brilliant。对于第二个问题,很抱歉,但是如何使用此方法将6个元素设置为另6个元素,即myArray(N,N,N,8,:)=myArray(N,N,N,6,:)编辑以添加您的附加问题的解决方案。src[6]是否需要类型为const int?我可以将其设置为int吗?它可以是非
const
src
可以是
float
数组,但如果
myMatrix
int
矩阵,则将
float
转换为
int