矩阵到向量C++
Matrix to vectors C++
我使用的是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个向量,如下所示:
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];
}
}
那么如何将矩阵转换为向量呢?
以下代码完成任务:
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;
}
您正在通过int** vec = new int*[n]
创建整数指针数组
这里,vec[j]将表示第j个向量(array
),并由vec[j] = new int[n]
如果我说对了。对于每一个i(行),您将填充一个不同的数组。类似这样的东西:
for(int i = 0; i < 5; ++i)
{
for(int j = 0 ; j < 5; ++j)
{
if(i == 0)
{
//fill the first vector
}
}
}
我知道你要求代码从矩阵转换为向量,然后将这些新向量转换为翻转矩阵,但你可以一步完成整个过程。
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];
}
}
因为你只想让行成为新矩阵中的列,所以你所要做的就是交换行和列迭代器(即矩阵的标准表示法是matrix[row][column],所以上面的代码迭代vec的第一行,同时也迭代第二个矩阵的第一列,创建你想要的反转)
还要注意,尽管这些东西在数学中是矩阵和向量,但实际使用的数据结构是数组和2-D数组(或数组数组)。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 矩阵向量乘法(cublasDgemv)返回零
- 一对向量构造函数:初始值设定项列表与显式构造
- 将结构向量排序为子组
- 在C++中调整向量中的索引
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么