看板 C_and_CPP 關於我們 聯絡資訊
感謝回覆的板友 經過版友提供的關鍵字和 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
loveflames:gcc 有constexpr 10/24 22:17
loveflames:有試過preprocessor?我不知道行不行就是 10/24 22:20
applecool:preprocessor 無法運算吧? 10/24 22:35
loveflames:有計算能力,可以串一下我的文 10/24 22:48
loveflames:只是寫起來會很醜 10/24 22:50
applecool:exp 可以算? 10/24 22:55
azureblaze:http://ideone.com/jXSpbg constexpr exp可以自己寫啊 10/24 22:59
azureblaze:可是還是用產生器吧XD 10/24 23:00
loveflames:能寫加減,就能寫乘除,但這個也需要遞慧 10/24 23:00
soheadsome:用enum 取代constrxpr 10/24 23:53
applecool:感謝,但式子全都是使用浮點數運算的。 10/25 22:59