24小时热门版块排行榜    

查看: 918  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lixy1217

木虫 (著名写手)

[交流] STL中重载运算的问题

以vector的加法为例,首先想到的语法是

template<typename T>
vector<T>&operator+(vector<T>&a,vector<T>&b)
但是有一个问题,我们会希望不同类型(int、double、complex)之间的向量应该也是可以相加的。

而如果用两个类型名,写成如下
operator+(vector<T1>&a,vector<T2>&b)
我们又无法在定义的时候就知道该返回哪个类型的,显然int+double应该返回double,而double+complex该返回complex

而如果放弃对"+"的重载,而只重载"="和"+=",即 "c=a;  c+=b;"  的方式,这样看起来不舒服倒是小事,但我如果还想重载一个矩阵与向量的乘法那该怎么办呢?

还有一种方法,就是将"小"的向量赋值给"大"的向量,达到类型统一后再进行计算,可这样的话就可能要多出很多计算量。 例如complex+complex是double+complex的两倍,而complex*complex大概是double*complex的三倍。

这方面,Matlab似乎很好的解决了此问题,但不知道用了什么样的办法。

当然还是更希望能听到各位的高见~
回复此楼
偶尔敞开心扉,世界将不再孤独
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dlmufei

木虫 (小有名气)

★
小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
3楼: Originally posted by lixy1217 at 2015-09-15 16:01:34
可是Matlab不说是基于C++之上的吗?那就应该能用C++做到这一点吧?...

1、Matlab怎么大的软件怎么可能是C++一种语言编写的,里面包含C/C++、Java以及一些脚本语言等。
2、MatLab只是M语言的的一个IDE,和语言本身没有关系。
3、一种语言的解释、编译等操作是由语言当初设计时决定的,就是一种规则的制定而已,后面的开发工具只是规则的实现,与实现的语言没有关系。
牛逼是自己干出来的!
4楼2015-09-15 17:10:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

dlmufei

木虫 (小有名气)

★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
lixy1217: 金币+2 2015-09-15 16:00:18
之所以STL没有这样实现就是有你说的这种原因,我感觉要想解决就得在这门语言刚开始设计数据类型的时候给你设计好。如果让咱们重新设计数值类型,或者你可以自己定义一个数值类型的库,所有数据的表示都用自定义的类型来表示的话,你说着这个问题完全可以通过多态机制实现的。
Matlab之所以能实现你说的这个问题,就是因为Matlab的弱数据类型,这和语言刚开始的设计用途是有密切关系的!
牛逼是自己干出来的!
2楼2015-09-15 12:29:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lixy1217

木虫 (著名写手)

引用回帖:
2楼: Originally posted by dlmufei at 2015-09-15 12:29:09
之所以STL没有这样实现就是有你说的这种原因,我感觉要想解决就得在这门语言刚开始设计数据类型的时候给你设计好。如果让咱们重新设计数值类型,或者你可以自己定义一个数值类型的库,所有数据的表示都用自定义的类 ...

可是Matlab不说是基于C++之上的吗?那就应该能用C++做到这一点吧?
偶尔敞开心扉,世界将不再孤独
3楼2015-09-15 16:01:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chanchancl

新虫 (初入文坛)

★ ★ ★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
lixy1217: 金币+4, 谢谢参与 2015-09-18 09:20:57
1。 对于模板返回值类型,可以使用C11的新关键字 delctype 可以让编译器预推断类型,详情自己搜索下。
2。这属于模板方面的问题,建议你多看下相关的书籍。实现起来没有你说的效率问题。

[ 发自小木虫客户端 ]
5楼2015-09-17 09:23:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:34 by XQNyDCa1Tk5n
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 by XQNyDCa1Tk5n
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:15 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +3 wangyl_123 2026-10-10 6/300 2026-10-11 15:04 by Abin0406
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 14:25 by VOMexwnDzOFZ
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:45 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[教师之家] 课题组会帮你通过考核么? +3 好运来~9527 2026-10-10 5/250 2026-10-11 09:00 by 好运来~9527
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[基金申请] 入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍 +5 13108017953 2026-10-08 5/250 2026-10-10 11:15 by wdwd123
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见