#include<iostream>
using namespace std;
void transpose(const int input[2][3], int (&output)[3][2]){
for(int i=0; i<2; ++i) {
for(int j=0; j<3 ; ++j) {
output [j][i] = input [i][j];
}
}
}
void printMultiArray(const int multi[2][3], const int len){
for (int row=0; row<2; row++){
for (int col=0; col<3; col++){
cout << multi[row][col] << " " ;
}
cout << endl;
}
}
int main(){
int multi[2][3] = {{1, 2, 3}, {7, 8, 9}};
int empty[3][2];
printMultiArray(multi, 6);
cout << "... space line ..." << endl;
transpose(multi, empty);
printMultiArray(empty, 6);
return 0;
}
전치 ...하지만 컴파일하고 실패하지 않는다 : 나는 문제가 있지만 무엇인지 확실하지 않다나는 2 × 3 배열을 tranpose하기 위해 위의 코드를 배열
6-3-transposeArray.cpp: In function ‘int main()’:
6-3-transposeArray.cpp:33: error: cannot convert ‘int (*)[2]’ to ‘const int (*)[3]’ for argument ‘1’ to ‘void printMultiArray(const int (*)[3], int)’
. 그것은 transpose()하지만 printMultiArray() 배열에 동일한 방식으로 전달되는 아무 문제가 것 같다 첫 번째 arg 불평하는 것 같다.
둘째로 이것을 구현하는 일반적인 방법이 있습니까? (예를 들어, 2 × 3, 2 × 4와 2X5 배열에 걸릴과 각 전치 반환 할 수 일반적인 FUNC) 벡터를 포함하는 클래스를 만듭니다 기본적인 질문의
비트하지만 감사 어떤 도움 :)
'std :: vector> '같은 것을 사용하지 않는 이유는 무엇입니까? 또한 트랜스 포즈하는 가장 간단한 방법은'(i, j)'를 뒤집는 것입니다 : http://stackoverflow.com/questions/16737298/what-is-the-fastest-way-to-transpose-a-matrix-in-c –
정말로, 정말로 *, *** *** 정말 이런 식으로 2 차 텐서를 저장하고 싶지 않습니다. 이는 잘 설계된 클래스 (내부 메모리 용도로'std :: vector '를 사용할 수있는)를위한 작업입니다. 아직 수업을 모른다면 책을 읽으십시오. – Zeta
부스트 uBlas가 옵션입니까?이 [질문] (http://stackoverflow.com/questions/4097153/how-to-transpose-matrix-using-ublas)을 참조하십시오. – dwxw