全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:876
推到 Plurk!
推到 Facebook!

如何快速使陣列相加

尚未結案
fatming
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-30 17:33:21 IP:61.221.xxx.xxx 未訂閱
例如有兩陣列 int a[5]={0,0,0,0,0}; int b[5]={1,1,1,1,1}; 想取得此兩陣列內容全部相加 ex: int c[5]; c=a b;//當然是不可能這樣加Orz... 如此c的值就會==>變成3,3,3,3,3 不一個一個取值出來相加 這兩陣列有什麼方法可以直接相加呢? 有類似 memset(&xxx,0,sizeof(xxx)); 之類的快速給值的方法嗎 請大大們指導謝謝Orz....
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-30 17:54:09 IP:163.28.xxx.xxx 未訂閱
Hello fatming,    我只會這樣,參考一下:
#define size 5
int a[size]={0,0,0,0,0};
int b[size]={1,1,1,1,1};
int c[size];
for (int i=0;i
^_^     
        
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-30 20:33:01 IP:221.169.xxx.xxx 未訂閱
可以使用STL,不過其實底層的作法跟nlj859是一樣的      
#include 
#include 
#include 
#include 
#include 
using namespace std;
#pragma hdrstop
#pragma argsused    int main()
{
   int a[4]={1,1,1,1};
   int b[4]={2,2,2,2};
   int c[4];       transform(a, a 4, b, c, plus());
   copy(c, c 4, ostream_iterator(cout, " "));
   cout << endl;
   system("pause");
}    
詳細用法請看STL的相關書籍,在這裡解釋不完...
fatming
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-31 11:32:26 IP:61.221.xxx.xxx 未訂閱
其實我想問的是 有哪種方法可以自訂型態將其型態類的東西都加起來 取該陣列的指標指向第一個位置設定他的範圍為A類別那麼大之後再相加 例如 struct A{ public: int a[25]; }; #define if(arryAdd(p1,p2))return((A)(p1 p2)); int aa[25]; int bb[25]; int cc[25]; cc=(A)*aa (A)*bb;//當然這樣也是不可能的Orz... 我這樣的用意是想減少運算的次數 因為有時候這種資料可能高達一萬筆 for一萬次時間上跟運算上都滿花費時間的不知道有更快的方法可以達到需求嗎 感謝回應m(_ _)m
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-31 11:43:03 IP:219.80.xxx.xxx 未訂閱
Hello fatming, 其實倒不用擔心花太多時間. 我測試過使用for做60000筆相加,花了0.03s左右就可做完. 如果有更快的做法,相信也感覺不太出來吧. 參考看看.
系統時間:2024-05-18 20:50:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!