我正在使用C ++ 我有以下矩阵:
{1,2,3,4,5}
{6,7,8,9,10}
{11,12,13,14,15}
{16,17,18,19,20}
{21,22,23,24,25}
我想将矩阵转换为5个vectros如下:
a[5] = {1,6,11,16,21};
b[5] = {2,7,12,17,22};
c[5] = {3,8,13,18,23};
d[5] = {4,9,14,19,24};
e[5] = {5,10,15,20,25};
我想将每个矩阵列转换为矢量
我有代码,需要5个向量并将其转换为矩阵:
typedef int *pInt;
//Each element of arr is a int-type pointer
pInt arr[5] = {a, b, c, d, e};
int matrix[5][5] = {0};
for(int i = 0; i < 5; ++i){
for(int j = 0 ; j < 5; ++j){
matrix[i][j] = arr[j][i];
}
}
那么如何将矩阵转换为向量?
答案 0 :(得分:1)
如果我说对了 对于每个i(行),您将填充不同的数组。像这样:
for(int i = 0; i < 5; ++i)
{
for(int j = 0 ; j < 5; ++j)
{
if(i == 0)
{
//fill the first vector
}
}
}
答案 1 :(得分:1)
以下代码完成工作:
# Paginate through todo
def view_todos(page=1):
paginated_todos = Todo.objects.paginate(page=page, per_page=10)
您正在通过int n=5;
int** vec = new int*[n];
for(int j=0;j<n;j++){
vec[j] = new int[n];
for(int i=0;i<n;i++){
vec[j][i] = matrix[i][j];
}
}
for(int i=0;i<n;i++){
cout<<"Vector: "<<i<<endl;
for(int j=0;j<n;j++){
cout<<vec[i][j]<<" ";
}
cout<<endl;
}
创建整数指针数组
这里,vec [j]将代表j th 向量(int** vec = new int*[n]
)并由array
创建
答案 2 :(得分:1)
我知道您要求代码从矩阵转换为向量,然后将这些新向量转换为翻转矩阵,但您可以一步完成整个过程。
int n = 5;
int vec[n][n];
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
vec[i][j] = matrix[j][i];
}
}
因为你只想让行成为新矩阵中的列,所以你要做的就是交换行和列迭代器(即矩阵的标准符号是矩阵[row] [column],所以上面的代码遍历vec的第一行,因为它也遍历第二个矩阵的第一列,创建你想要的反转)
另请注意,虽然这些是数学中的矩阵和向量,但您使用的实际数据结构是数组和二维数组(或数组数组)。