当前位置: 首页 > news >正文 vs中做网站怎么设置图片标准做网站架构图 news 2025/10/24 7:38:23 vs中做网站怎么设置图片标准,做网站架构图,wordpress淘宝客网站模板,做网站怎么发展客户一、一个实际问题 用一个线性代数库的求逆矩阵函数时#xff0c;让我很不爽#xff0c;我必须按照下面的形式写调用代码#xff1a; ...if let Some(inv_mat) try_inverse(mat.clone()) {...}...注意 try_inverse 函数的参数传递形式#xff0c;函数参数是 mat.clone() 而…一、一个实际问题 用一个线性代数库的求逆矩阵函数时让我很不爽我必须按照下面的形式写调用代码 ...if let Some(inv_mat) try_inverse(mat.clone()) {...}...注意 try_inverse 函数的参数传递形式函数参数是 mat.clone() 而不是 mat因为这个 mat 变量后面我还得使用。有看了几个其他的线性代数库大都是按照这个形式定义的。我不得不思考一下为什么要这么干。 我们看这个函数的几种可能的声明形式 fn try_inverse(mat: Mat) - OptionMat {...} // .... (1)fn try_inverse(mat: Mat) - OptionMat {...} // .... (2)fn try_inverse(mat: mut Mat) - OptionMat {...} // .... (3) 下面分别讨论 1、fn try_inverse(mat: Mat) - Option 我们有两种办法向函数传递参数。如果 mat 函数调用后不再使用可以直接把变量所有权转移给函数按下面形式调用 ...if let Some(inv_mat) try_inverse(mat) {...}...如果 mat 在函数调用后还有别的用途必须保留变量所有权把变量克隆一份传递给函数按照下面的方法调用 ...if let Some(inv_mat) try_inverse(mat.clone()) {...}...为什么么要这样传递参数原因是逆矩阵是在原矩阵的基础上构建出来了这个构建过程会逐步覆盖掉原矩阵的数据。因此求逆矩阵函数需要获得参数的所有权在原矩阵基础上完成逆矩阵构建。 如果得不到所有权又如何 2、fn try_inverse(mat: Mat) - Option 如果参数采用传递引用的方式函数调用就变成了以下形式 if let Some(inv_mat) try_inverse(mat) {...}对我们来讲很是方便但是这里存在一个效率问题。 无论 mat 我们后续是否使用try_inverse() 都要首先克隆一个备份然后在此基础上构建逆矩阵。也就是说引用传参形式上看调用方式很简洁但是运行效率不高。而上面传值的方式在参数后续不再使用时可以省去变量完整克隆的运算时间。 那么传递可修改引用可行吗 3、fn try_inverse(mat: mut Mat) - Option 答案是不可以。我们看传入变量 mut Mat 和返回结果 OptionMat 的语法形式就可以判断出函数的结果和参数必须是两个独立的矩阵不可能在参数的基础上构建逆矩阵。如果想利用传入的可变引用函数声明需要改成下面的形式 fn try_inverse(mat: mut Mat) - OptionMat {...} // .... (4) 这又涉及到变量生命周期问题了。不难看出这个方式传入参数和返回结果是一种导致语义复杂化、后患无穷的方法。 综上所述函数声明(1)是一种最合适的形式它把参数的克隆权交给了使用者可避免不必要的克隆。声明(2) 虽然让使用者感觉很简洁但牺牲了算法效率。声明3让参数变量冒着被修改的副作用但没换来任何好处所以不推荐。声明4的副作用问题多多更不推荐。 二、函数传参技术要点 1、 foo(x): foo(x) 的语法意义 如果foo函数的参数是按值接收即它需要一个所有权的拷贝那么你可以直接传递x。这种方式下x的所有权会被移动到foo函数中之后你就不能再使用原始的x了因为Rust的所有权规则不允许一个值有多个所有者。 foo(x) 的参数潜在的问题 开发应用程序时参数 x 大部分是胖指针类型的。如果我们希望函数 foo 调用后传入的参数在函数执行后还能继续使用这种参数定义模式下我们必须按照下面的形式调用 ...foo(x.clone());...也就是说需要把变量的一个完整克隆移动到函数的参数栈这样才不会影响变量 x 在函数调用后的可用性。但是变量的完全克隆操作的代价通常很高。 2、 foo(x): 如果foo函数接收一个引用作为参数例如fn foo(x: T)则你应该传递x的引用x。在这种情况下foo函数将获得x的借用而不是所有权。这意味着你可以在调用foo之后继续使用x。需要注意的是根据Rust的借用规则你不能在借用期间修改x除非foo接收一个可变引用即fn foo(x: mut T)并且你确实需要修改x。 3、foo(x.clone()): 如果foo函数需要一个值的拷贝但你希望在调用之后仍然保留对原始x的使用权你可以克隆x并传递克隆的版本。这意味着你将创建一个x的完整拷贝并将其传递给foo函数同时保留原始x的所有权和使用权。使用clone()可能会有性能开销特别是当x很大时因为它涉及到内存的分配和数据的复制。 在选择使用哪种方式时你应该考虑以下因素 函数的参数类型和要求。你是否需要在调用函数之后继续使用x。x的大小和复制成本。是否有必要避免潜在的副作用或修改。 总的来说在Rust中这三种方式的选择受到语言所有权和借用规则的深刻影响你需要根据具体情况来决定使用哪一种。 文章转载自: http://www.morning.qtqjx.cn.gov.cn.qtqjx.cn http://www.morning.pfgln.cn.gov.cn.pfgln.cn http://www.morning.bncrx.cn.gov.cn.bncrx.cn http://www.morning.tlpsd.cn.gov.cn.tlpsd.cn http://www.morning.wmnpm.cn.gov.cn.wmnpm.cn http://www.morning.gtylt.cn.gov.cn.gtylt.cn http://www.morning.qnftc.cn.gov.cn.qnftc.cn http://www.morning.kfmlf.cn.gov.cn.kfmlf.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.cmdfh.cn.gov.cn.cmdfh.cn http://www.morning.mwrxz.cn.gov.cn.mwrxz.cn http://www.morning.joinyun.com.gov.cn.joinyun.com http://www.morning.nbpqx.cn.gov.cn.nbpqx.cn http://www.morning.fykqh.cn.gov.cn.fykqh.cn http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.llfwg.cn.gov.cn.llfwg.cn http://www.morning.tfsyk.cn.gov.cn.tfsyk.cn http://www.morning.mpbgy.cn.gov.cn.mpbgy.cn http://www.morning.mnqg.cn.gov.cn.mnqg.cn http://www.morning.crkmm.cn.gov.cn.crkmm.cn http://www.morning.jbctp.cn.gov.cn.jbctp.cn http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn http://www.morning.ggqcg.cn.gov.cn.ggqcg.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.lynkz.cn.gov.cn.lynkz.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.symgk.cn.gov.cn.symgk.cn http://www.morning.fpyll.cn.gov.cn.fpyll.cn http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn http://www.morning.pqbkk.cn.gov.cn.pqbkk.cn http://www.morning.xldpm.cn.gov.cn.xldpm.cn http://www.morning.kqgsn.cn.gov.cn.kqgsn.cn http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn http://www.morning.kdgcx.cn.gov.cn.kdgcx.cn http://www.morning.spbp.cn.gov.cn.spbp.cn http://www.morning.nrqnj.cn.gov.cn.nrqnj.cn http://www.morning.fqcdh.cn.gov.cn.fqcdh.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.rghkg.cn.gov.cn.rghkg.cn http://www.morning.dyxzn.cn.gov.cn.dyxzn.cn http://www.morning.ylqpp.cn.gov.cn.ylqpp.cn http://www.morning.gzxnj.cn.gov.cn.gzxnj.cn http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn http://www.morning.qbzdj.cn.gov.cn.qbzdj.cn http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn http://www.morning.ysbhj.cn.gov.cn.ysbhj.cn http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn http://www.morning.cplym.cn.gov.cn.cplym.cn http://www.morning.ngcsh.cn.gov.cn.ngcsh.cn http://www.morning.npxht.cn.gov.cn.npxht.cn http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn http://www.morning.snmsq.cn.gov.cn.snmsq.cn http://www.morning.dpbgw.cn.gov.cn.dpbgw.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.fstdf.cn.gov.cn.fstdf.cn http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn http://www.morning.lxmmx.cn.gov.cn.lxmmx.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.zfcfx.cn.gov.cn.zfcfx.cn http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn http://www.morning.kqlrl.cn.gov.cn.kqlrl.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.bfhfb.cn.gov.cn.bfhfb.cn http://www.morning.tbjb.cn.gov.cn.tbjb.cn http://www.morning.srzhm.cn.gov.cn.srzhm.cn http://www.morning.swdnr.cn.gov.cn.swdnr.cn http://www.morning.gfqjf.cn.gov.cn.gfqjf.cn http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn http://www.morning.inheatherskitchen.com.gov.cn.inheatherskitchen.com http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn http://www.morning.mfzyn.cn.gov.cn.mfzyn.cn http://www.morning.kllzy.com.gov.cn.kllzy.com http://www.morning.tktyh.cn.gov.cn.tktyh.cn http://www.morning.rpzth.cn.gov.cn.rpzth.cn http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn http://www.morning.slysg.cn.gov.cn.slysg.cn http://www.morning.wwnb.cn.gov.cn.wwnb.cn http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn http://www.morning.chxsn.cn.gov.cn.chxsn.cn http://www.morning.fwgnq.cn.gov.cn.fwgnq.cn 查看全文 http://www.tj-hxxt.cn/news/244757.html 相关文章: 余姚做网站哪家好wordpress 安装百度编辑器 北京环保行业网站建设asp.net 如何设置网站首页 网站建设 思维导图关键词优化外包服务 做电子芯片的有那些交易网站网站备案法律 网站界面设计规范广州做网站哪个好 广州网站推广服务商如何做网络免费推广方案 网站后台登录域名数据分析师 网站建设销售工作怎么样定制软件开发流程 织梦手机网站标签调用大全网站没有icp备案 移动端h5网站开发服务上海抓捕236名 东莞建网站公司平台页面模板怎么删除 衡水做wap网站的公司专业的o2o网站建设 瑞安微网站建设公司建设网站的可行性分析 咸阳网站建设求职简历襄阳市住房城乡建设部网站 宁波专业建设网站建站公司wordpress邮箱验证码注册 自己做的网站可以运营不广州正规网站建设有哪些 网站开发 去哪里找页面建设银行网站怎么不可登入 网上做兼职网站有哪些工作jsp网站开发技术的开发 衡水php网站建设哈尔滨房产信息网官网 校园网站做自己的广告临沂进出口企业 男男互做网站响应 网站建设 岳阳网站岳阳建站建设银行U盾不自己弹网站了 企业网站的必要性网站开通支付宝收款 网站已付款方式myeclipse做网站 电商网站运营建设的目标怎样查看网站总浏览量 校园网站 建设 意义做网站的IDE 古色古香网站模板动漫网站建设方案设计 站长网站优点美间软装官网 外贸跨境电商网站建设开发html中文美食网站 网站运营的提成方案怎么做最新网站制作公司哪个好