Re: [問題] 如何在編譯期建表

看板C_and_CPP作者 (noOneKnows)時間12年前 (2013/10/24 22:00), 編輯推噓5(506)
留言11則, 4人參與, 最新討論串3/3 (看更多)
感謝回覆的板友 經過版友提供的關鍵字和 code,我 study 了之後, 感覺必須要有 constexpr 的數學函數才有辦法 因為我的函數雖然只跟索引有關,但很複雜。 小弟數學不佳,不知道如何拆成遞迴 不過 survey 了一下發現 constexpr 數學函數好像沒有編譯器實作出來 手邊的 VC 好像不認識 constexpr 看來短期內這需求是無解了 所以我還是用批次的方式產生了。 總之感謝大家!! ※ 引述《applecool (noOneKnows)》之銘言: : 小弟需要在編譯期建一張很大的表,需求大概像這樣子, : 簡化起見,假設長度 N,式子為 Exponential value of (index * alpha) : 我希望達到這樣的效果: : static const double alpha = 3.0; : static const double Table[N] = { : exp(0*alpha), : exp(1*alpha), : exp(2*alpha), : ... : exp(i*alpha), : ... : exp((N-1)*alpha) : }; : 我希望一開始就把這個結果 load 到記憶體,就像手動宣告以上程式碼這樣。 : 而不可以做成 : static Table[N]; : Table[0] = exp(0*alpha); : Table[1] = exp(1*alpha); : ... : Table[N-1] = exp((N-1)*alpha); : 目前沒想到什麼好方法,主要是宣告 array 這塊,還要保證記憶體連續,還有實際上的 : 式子遠比 exp 複雜也希望不要使用數學展開成遞迴。 : 請問有人有好方法嗎? : 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.241.67.33

10/24 22:17, , 1F
gcc 有constexpr
10/24 22:17, 1F

10/24 22:20, , 2F
有試過preprocessor?我不知道行不行就是
10/24 22:20, 2F

10/24 22:35, , 3F
preprocessor 無法運算吧?
10/24 22:35, 3F

10/24 22:48, , 4F
有計算能力,可以串一下我的文
10/24 22:48, 4F

10/24 22:50, , 5F
只是寫起來會很醜
10/24 22:50, 5F

10/24 22:55, , 6F
exp 可以算?
10/24 22:55, 6F

10/24 22:59, , 7F
http://ideone.com/jXSpbg constexpr exp可以自己寫啊
10/24 22:59, 7F

10/24 23:00, , 8F
可是還是用產生器吧XD
10/24 23:00, 8F

10/24 23:00, , 9F
能寫加減,就能寫乘除,但這個也需要遞慧
10/24 23:00, 9F

10/24 23:53, , 10F
用enum 取代constrxpr
10/24 23:53, 10F

10/25 22:59, , 11F
感謝,但式子全都是使用浮點數運算的。
10/25 22:59, 11F
文章代碼(AID): #1IQIVsLu (C_and_CPP)
文章代碼(AID): #1IQIVsLu (C_and_CPP)