| 查看: 819 | 回复: 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似乎很好的解决了此问题,但不知道用了什么样的办法。 当然还是更希望能听到各位的高见~ |
» 猜你喜欢
国自然申请五篇代表作大比拼,感觉这个是最重要的
已经有4人回复
E0414, 我的本子有没有希望?
已经有13人回复
看《给阿ma的情书》有感
已经有4人回复
雷雨
已经有3人回复
青A35岁以下通知答辩了吗
已经有3人回复
希望面上有个好结果
已经有7人回复
三区计算机方向期刊推荐
已经有5人回复

dlmufei
木虫 (小有名气)
- 应助: 6 (幼儿园)
- 金币: 3904.5
- 散金: 10
- 帖子: 246
- 在线: 184.1小时
- 虫号: 2426711
- 注册: 2013-04-19
- 性别: GG
- 专业: 地理学

2楼2015-09-15 12:29:09
lixy1217
木虫 (著名写手)
- 应助: 4 (幼儿园)
- 金币: 4622.6
- 散金: 117
- 红花: 7
- 帖子: 1381
- 在线: 234.3小时
- 虫号: 1125891
- 注册: 2010-10-18
- 性别: GG
- 专业: 计算数学与科学工程计算

3楼2015-09-15 16:01:34
dlmufei
木虫 (小有名气)
- 应助: 6 (幼儿园)
- 金币: 3904.5
- 散金: 10
- 帖子: 246
- 在线: 184.1小时
- 虫号: 2426711
- 注册: 2013-04-19
- 性别: GG
- 专业: 地理学

4楼2015-09-15 17:10:19
5楼2015-09-17 09:23:01
lixy1217
木虫 (著名写手)
- 应助: 4 (幼儿园)
- 金币: 4622.6
- 散金: 117
- 红花: 7
- 帖子: 1381
- 在线: 234.3小时
- 虫号: 1125891
- 注册: 2010-10-18
- 性别: GG
- 专业: 计算数学与科学工程计算

6楼2015-09-18 09:22:14











回复此楼