精华内容
下载资源
问答
  • C++方式 double**Q=newdouble*[row];//初始化Q矩阵 for(inti=0;i<row;++i) { Q[i]=newdouble[POS_NUM](); } int**Path=newint*[row];//初始化Path矩阵 for(inti=0;i<row;++i) { Path...

    C++方式  

    double **Q=new double*[row];    //初始化Q矩阵  
    
    for(int i=0;i<row;++i) 
    {
        Q[i]=new double[POS_NUM]();  
    }
    
    
    int **Path=new int*[row];   //初始化Path矩阵  
    
    for(int i=0;i<row;++i)
    {
        Path[i]=new int[POS_NUM]();  
    }  
    
     

       

    // c方式   

      用于保存各阶段的最大概率值(len列,SDIM行)  
     

    double ** ppValues = (double**)calloc(len, sizeof(double*));  
    
    for(int i = 0; i < len; i++)
    { 
         ppValues[i] = (double*)calloc(SDIM, sizeof(double));  
     }  

    双指针初始化: 
    字符串双指针初始化:

    char **text = new char*[512];
    for (int i = 0; i < 512; i++)
    {
        text[i] = new char[1024];
     }

    整型双指针初始化:

    int **temp;
    
    int i = 0;
    
    //初始化
    
    temp = new int*[100];
    
    for(i = 0; i < 100; i++)
    
    {
        temp[i] = new int[200];
    }
    
    //释放
    
    for(i = 0; i < 100; i++)
    {
      delete []temp[i];
    }
    
    delete []temp;

     

    展开全文
  • c++使用vector创建二维0矩阵初始化) 一、前言 c++真的是又爱又恨的一门语言,本人是一名python程序员但是因工作需求不得不投入到c++的大军中,逐渐偏离人生苦短我用python的初衷,唠叨完毕开始正题。 最近在做一...

    c++使用vector创建二维0矩阵(初始化)

    一、前言

    • c++真的是又爱又恨的一门语言,本人是一名python程序员但是因工作需求不得不投入到c++的大军中,逐渐偏离人生苦短我用python的初衷,唠叨完毕开始正题。
    • 最近在做一个去eigen库的工作,需要使用vector替换,于是总结了一些使用vector实现矩阵的一些操作的代码,有需要的可以借鉴一下(亲测可用哦)。
    • 本篇仅仅写的是vector的初始化的方法,文章后面会逐渐附上其他矩阵操作的链接。

    二、话不多说上才艺

    • 开始我刚使用vector的时候也就直接这样搞初始化了,因为在eigen中定义固定大小之后矩阵中的值并不是0,将其生成一个零矩阵的时候还需要(例:Eigen::MatrixXd::Zero(4, 3))这样,于是我认为需要写一个函数对一个矩阵进行赋值为0的操作,具体代码如下。
    #include <iostream>
    #include <vector>
    using namespace std;
    
    vector<vector<double>> make_zero_martix(int m, int n) {
        //创建0矩阵
        vector<vector<double>> array;
        vector<double> temparay;
        for (int i = 0; i < m; ++i)
        {
            for (int j = 0; j < n; ++j)
                temparay.push_back(i*j);
            array.push_back(temparay);
            temparay.erase(temparay.begin(), temparay.end());
        }
        return array;
    }
    
    
    int main() {
    	vector<vector<double>> zero_matrix = make_zero_martix(1, 3);
    	for (int i = 0; i < zero_matrix.size(); i++)
        {
            for (int j = 0; j < zero_matrix[0].size(); j++)
            {
                cout << zero_matrix[i][j] << " ";
            }
            cout << endl;
        }
        return 0;
    }
    
    • 果然还是太年轻了,后来发现vector本身就有一个初始化的功能,并且其初始化之后就是一个0矩阵(这里说的都是二维数组哦!),代码如下
    vector<vector<double>> initial_matrix(int m, int n) {
        //初始化矩阵
        vector<vector<double>> array(m);
        for (int i = 0; i < m; i++)
        {
            array[i].resize(n);
        }
        return array;
    }
    

    三、其他矩阵操作的链接

    展开全文
  • Eigen使用笔记——矩阵初始化

    千次阅读 2020-10-27 09:46:28
    1.直接输入 Matrix3f m; m << 1, 2, 3, 4, 5, 6, 7, 8, 9; 2.初始化为ones,zeros,Identity MatrixXd m = MatrixXd::Zero(col,row);...3.使用矩阵来给另一个矩阵赋值 MatrixXf matA(2, 2); matA <&

    1.直接输入

    Matrix3f m;
    m << 1, 2, 3,
    4, 5, 6,
    7, 8, 9;

    2.初始化为ones,zeros,Identity

    MatrixXd m = MatrixXd::Zero(col,row);
    MatrixXd m = MatrixXd::Ones(col,row);
    MatrixXd m = MatrixXd::Identity(col,row);

    3.使用矩阵来给另一个矩阵赋值

    MatrixXf matA(2, 2);
    matA << 1, 2, 3, 4;
    MatrixXf matB(4, 4);
    matB << matA, matA/10, matA/10, matA;
    std::cout << matB << std::endl;
    //output
    1 2 0.1 0.2
    3 4 0.3 0.4
    0.1 0.2 1 2
    0.3 0.4 3 4

    或者使用block,row,col等

    Matrix3f m;
    m.row(0) << 1, 2, 3;
    m.block(1,0,2,2) << 4, 5, 7, 8;
    m.col(2).tail(2) << 6, 9;
    std::cout << m;
    //output
    1 2 3
    4 5 6
    7 8 9

     

    展开全文
  • 最近需要做一个项目需要进行矩阵运算,第一时间想到的就是一个Eigen的库,但是装好以后发现

    最近需要做一个项目需要进行矩阵运算,第一时间想到的就是一个Eigen的库,但是装好以后发现Eigen库无法实现变量X变量的矩阵类型(也可能是我没有发现怎么使用这个库)。

    于是决定自己写一个矩阵。

    最开始定义了一个结构体:

    typedef struct
    {
    	int row,col;//行,列
    	double **data;
    }Matrix;
    

    其中定义了一个二维指针作为存储矩阵内容内存空间的指引,首先需要根据行列申请一块内存空间:

    	void create()
    	{
    		double **_data = new double*[row];
    		for (int i = 0; i < row; i++)
    		{
    			_data[i] = new double[col];
    		}
    		data = _data;
    	}
    

    以上代码可以直接放进结构体中,以上代码也花了一些时间理解,C++中无法直接使用new定义二维数组。

    所以采用中转的思路,先定义一个二维指针**data指向一组一维指针数组,再为每一个指针分配一个一维数组。

    如果难以理解可以看我打个比方,
    有一个领队先找了10个小队长,10个小队长就是一个地址数组,int*[10],然后10个小队长又为自己各自找了9个队员,每个队长负责的小队就是一个数组,int[10],直接储存数据的数组,最后加起来就是一个10*10=100的二维数组。

    以上就完成了二维数组内存空间的分配。

    而向double **data中传入数据时需要注意double **和double[][]的区别

    int a[2][2]={{...},{...}};
    
    void fun(int **src)
    {
    ...
    }
    
    main()
    {
    	fun(a);
    }
    

    理论上来说a也是一个指针,是a[2][2]数组的首地址和&a[0][0]一个作用,但是fun(a)的写法在编译器中会报错,提示int a[2][2]无法转换为int **。如果非要传入参数可以使用fun((int **)a)直接强制转换,能够通过编译,但是会出现其他问题,不推荐这种方法。

    展开全文
  • C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!!   ...
  • C++ 矩阵加减法

    2012-11-01 10:50:19
    (2) 定义矩阵初始化函数,可以从cin中输入矩阵元素; (3) 定义矩阵输出函数,将矩阵格式化输出到cout; (4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (5) 定义矩阵相减的函数...
  • c++ 矩阵转换

    2019-04-19 21:14:07
    定义一个方阵类Array,实现对方阵进行顺时针90度旋转。 定义一个方阵类Array,实现对方阵进行顺时针90度旋转。如图所示。 具体要求如下: ...定义一个Array类对象test,用b初始化test,完成对该类的测
  • C++ 数组初始化& INF的设置

    千次阅读 2020-03-12 14:40:31
    一 在 函数里面的初始化 数组元素的值是未知的 (如果不赋初值 的话) 如果只设置 一个 初值的话 二 如果数组设置为全局变量的话 没有赋初值的 话 都默认为 0 如果设置为 初值的话 ,也只有第一 ...
  • 在使用动态矩阵的时候发现一个问题,在无法知道大小的时候直接初始化 int rows,cols;//从其他地方获取的尺寸行列数 Eigen::MatrixXf tmp_mat; tmp_mat=Eigen::Matrix<float,rows,cols>::Zero(); 会报错提示,...
  • 初始化一个嵌套的char型嵌套vector,已知C++11允许vector用花括号{}的初始方式,vector元素以逗号隔开,例如: vector> board = {‘X’, ‘X’, ‘X’}; 推广之,易知嵌套vector就是内层vector作为外层vector的元素,...
  • C++ vector初始化二维数组与其迭代器

    万次阅读 2014-07-11 16:17:45
    发现C++真是无边无界,自己只能尽力而为 最近为了写个计算几何作业,要写个
  • C++ vector的初始化

    万次阅读 多人点赞 2019-02-23 14:51:41
    C++ vector的初始化一维数组的初始化1. vector &lt; int &gt; v;2. vector &lt; int &gt; v = {1,2,3,4,5};3. vector &lt; int &gt; v(n); vector &lt; int &gt; v(n,m);4. vector ...
  • Mat矩阵初始化

    千次阅读 2016-06-02 10:09:56
    在研究Mat矩阵初始化的时候,发现其不能像Matx轻量级矩阵那样,直接利用数组来进行初始化,而是利用一个内部的变量类型:Scalar来进行初始化的。参考手册中的构造函数如下所示: (1) Mat::Mat()(2) Mat::Mat...
  • C++矩阵相乘

    万次阅读 2018-06-09 15:36:13
    //变量使用前记得初始化,否则结果具有不确定性   for(int  n = 0 ;n < SIZE_N ;n++){   matrix_result[m][s]+=matrix_a[m][n]*matrix_b[n][s];   }   }   }   for(int  m = 0 ;m < ...
  • 1. 矩阵初始化 初始化单位矩阵 操作矩阵 glUniformMatrix4fv(u_matrix,1,GL_FALSE,matrix); 参数 u_matrix 是shader 里面的uniforma 值 参数1 是 几个矩阵 一个矩阵 参 数 GL_FALSE 在OpenGL中是以列为主序, 如果...
  • C++ new动态数组初始化

    2021-02-25 16:46:26
    //strlen函数是不包括‘\0’...//C++ new动态数组初始化 void testnew( const char* str ) { if (!str){ m_pdata = 0; } else{  int len = strlen(str); m_pdata = new char[len + 1]; strcpy(m_pdata,str); .
  • C++ 数据与结构第三次作业 潘隆武 21425202 机械工程 题目在已建立 N*M的矩阵类前提下 重载运算符 +* => #include<iostream> #include<iomanip> using namespace std;...// 初始化构造函数 Matrix(con
  • C++矩阵的加减乘除.pdf

    2020-07-08 08:15:42
    矩阵类 程序设计基础课程... 未定义书签 五总结 8 参考书目 9 一 编程目的 编写一个矩阵类 可以实现矩阵初始化 矩阵的加法 减法乘法等基本功能 要求对运算符 +- 进行重载 二 设计要求 编写一个矩阵类 1. 实现矩阵的初

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,654
精华内容 12,661
关键字:

c++矩阵初始化

c++ 订阅