Re: [问题] 用class宣告的方法运算动态阵列

楼主: moussorgsky (法国号有气质)   2015-07-25 04:06:55
: → fatrabitree: 你是要练习还是要用? 07/24 01:43
: → fatrabitree: 要用的话就用std::vector就好了 07/24 01:43
: → fatrabitree: 要练习的话也可以去翻vector的实作 07/24 01:44
我找到用vector写动态阵列的code了,不过我遇到新的问题:
在main里面呼叫副程式,阵列有传进去副程式里面,在副程式里面对阵列做运算也有成功
,不过没有回传到main里面......我应该在副程式里加什么动作吗?
#include <iostream>
#include <vector>
#include "conio.h"
using namespace std;
void cal1(vector<vector<int> > ivec){
for(int y = 0; y != ivec.size(); ++y) {
for(int x = 0; x != ivec[0].size(); ++x) {
cout << ivec[y][x] << endl;
ivec[y][x] = ivec[y][x] + 1;
cout << ivec[y][x] << endl << endl;
// 这里的输出的确有对ivec做改变了
}
}
}
int main() {
const int sizex = 3;
const int sizey = 2;
vector<vector<int> > ivec(sizey, vector<int>(sizex));
for(int y = 0; y != sizey; ++y) {
for(int x = 0; x != sizex; ++x) {
ivec[y][x] = y + x;
}
}
for(int y = 0; y != sizey; ++y) {
for(int x = 0; x != sizex; ++x) {
cout << ivec[y][x] << endl;
}
}
cout << endl << endl;
//未呼叫副程式前的初始值是0,1,2,1,2,3
cal1(ivec);
//各元素值加1,在副程式里有cout,结果是正确的
cout << endl;
for(int y = 0; y != sizey; ++y) {
for(int x = 0; x != sizex; ++x) {
cout << ivec[y][x] << endl;
}
}
//再cout出来时,ivec没有改变......应该是没有回传回来
//我应该在副程式里加什么,才能让改变后的值传回来呢?
//顺便问一下:我如果引入两组以上的阵列到副程式里做运算,且两组
//阵列都有被改变,我要怎么把它们都传回main呢?
system("pause");
}
: 推 EdisonX: 资料量还算正常 (算一下大概 500MB) , 不过程式跑一周... 07/25 01:49
: 推 Sunal: 看原PO跑数值模拟应该不是CS本科 07/25 01:50
我如果是CS本科,连引数都不会的话,我真的该去跳楼了......
我以前大四去修C++,学期还没到一半就已经开始混了......学期末的上机考也很烂,
资料结构的观念也很弱......
: → EdisonX: 是 Alg. 那里没弄好 , 还是 O2 没开 , 还是本来就那么久? 07/25 01:50
: → Sunal: 毕竟物理现象要算的对才是重要 不过跑一周... 07/25 01:51
: → EdisonX: 我跑超过 3 分钟就受不了要停下来了.. 万一一周后的结果 07/25 01:52
: → EdisonX: 是错的 , 那不是还要再重跑一周 , 想到都软了 Orz 07/25 01:52
: → EdisonX: 对了 , 有种东西叫 intel library ... 07/25 01:53
: → EdisonX: 然后你发的 sample code, 叫 intel library 做比你自己 07/25 01:57
: → EdisonX: 写速度还要快很多。 07/25 01:57
我在读计算流体力学(数值模拟)方面的博班,跑一周还算短的,
以前我们研究室硕班的学妹,用套装软件(FLUENT)跑80万网格的VOF(有自由液面的那
种case),还有跑超过两个星期的......
所以我们都要先测试小domain,确定物理现象是对的,才敢跑大domain。
其实说实话,我们只要会基本的程式流程就可以跑模拟了,我们难是难在数学的model
不易理解。所以当我需要稍微进阶一点点的程式技巧的时候,我就需要来这里求助了..
楼主: moussorgsky (法国号有气质)   2015-07-25 07:43:00
我会了~在引入副程式时使用指标,在call副程式时使用解指标。再次谢谢大家的指教!
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-07-25 10:39:00
跑两个星期会不会太夸张 是不是CPU被偷换成286 >_<
作者: ZanFu5566 (仁甫56 优质56 清新56)   2015-07-25 11:09:00
&
作者: fatrabitree (胖兔子)   2015-07-25 11:59:00
太慢的话是不是先考虑搞平行化甚至cuda
作者: huei820504 (huei820504)   2015-07-25 19:51:00
出于好奇,问一下为什么要用malloc,一般来说可以用new吧?

Links booklink

Contact Us: admin [ a t ] ucptt.com