어레이 선언의 2 종류 고려 : I 알고 여기서 다음 X하여 인덱스2 차원 배열을 시뮬레이션하는 1 차원 배열과 연속적으로 비슷한 메모리에 2 차원 배열이 설정되어 있습니까?
T x [rows * cols]; // type 1
T y [rows][cols]; // type 2
가 평소 제 1 타입을 사용 (유형 1) 행 * COLS + COL] I 원하는 경우
2d 배열을 1 차원 배열로 복사하는 것. 즉 : copy type2 -> type1. 이것들이 같은 방식으로 메모리에 배치되도록 보장된다면, 나는 다른 것과 하나의 memcpy를 할 수 있을까요? 현재 나는 루프가 있지만 메모리가 둘 다 동일한 레이아웃이라면 나는 단지 memcpy를 할 수 있다고 생각하고있다. 아래의 다음 public 생성자를 고려하십시오.
public:
// construct a matrix from a 2d array
template <unsigned int N, unsigned int M>
Matrix (T (&twoDArray)[N][M] ) : rows_(N), cols_(M), matrixData_(new T[rows_*cols_])
{
// is there a refactor here? Maybe to memcpy?
for (unsigned int i = 0; i < rows_ ; ++i)
{
for (unsigned int j = 0; j < cols_ ; ++j)
{
matrixData_[ i * cols_ + j ] = twoDArray[i][j];
}
}
}
private:
unsigned int rows_;
unsigned int cols_;
T* matrixData_;
"type 2"는 적법하지 않습니다. C++. –
원하는 항목 : 'T ** y = new T * [row]; // type 2' – smac89
@ Smac89 : 아무도 원하지 않습니다. –