是否有任何C++ 11 constexpr
常量可用來代替<cmath>
中的常量宏,即常量如M_PI
和朋友?或缺乏,在運行時提供這些常量的任何全局const
值?constexpr替代數學常量,如M_PI
4
A
回答
5
沒有在C++標準庫中定義的預定義的constexpr或全局常量常量。但是你可以通過自己喜歡定義它們,例如:
namespace MathConstants {
const double E = 2.71828182845904523536;
const double LOG2E = 1.44269504088896340736;
const double LOG10E = 0.434294481903251827651;
const double LN2 = 0.693147180559945309417;
const double LN10 = 2.30258509299404568402;
const double PI = 3.14159265358979323846;
const double PI_2 = 1.57079632679489661923;
const double PI_4 = 0.785398163397448309616;
const double PI_1_PI = 0.318309886183790671538;
const double PI_2_PI = 0.636619772367581343076;
const double PI_2_SQRTPI = 1.12837916709551257390;
const double SQRT2 = 1.41421356237309504880;
const double SQRT1_2 = 0.707106781186547524401;
};
或者使用升壓數學常數模板,一些文檔here(沒有用它)。
+1
+1爲boost指針。似乎在最近的版本中,這些東西已經被移出內部子包,所以它的API應該是相當穩定的。請參閱[最近文檔](http://www.boost.org/doc/libs/1_53_0/libs/math/doc/sf_and_dist/html/math_toolkit/constants.html)。 – MvG 2013-03-23 01:30:21
相關問題
- 1. 如何在Visual C++ 2008中訪問數學常量(例如M_PI)?
- 2. 對constexpr函數斷言的替代
- 3. C++在constexpr類中的常量指針
- 4. 替代全局變量/常量
- 5. 迭代與constexpr
- 6. 如何定義constexpr變量
- 7. 與數學表達式VIM替代
- 8. Sympy替代數學表達式
- 9. 翻譯替代常量在PHP
- 10. C#接口和宏常量替代品
- 11. SKSpriteNode zrotation M_PI真氣
- 12. Clang ++是否支持libC++支持constexpr數學函數
- 13. 替換#defines常量
- 14. 使用指向常量數據的指針的替代方法?
- 15. 替代變量?
- 16. 替代變量?
- 17. %替代變量
- 18. 錯誤! constexpr變量必須通過一個常量表達式來初始化constexpr
- 19. is_defined constexpr函數
- 20. 如何在textView中創建數學常量e(如exp(1))?
- 21. 如何確定數學規則,其在替代
- 22. 將代碼轉換爲constexpr
- 23. 用GAS中的常數代替宏
- 24. 代替非常慢的pow()函數
- 25. 替代常數的公式MATLAB
- 26. SED替代變量
- 27. 我應該在函數中使用哪個常量:constexpr const或enum?
- 28. 替代Mayavi的科學3D繪圖
- 29. 替代scikit學習labelBinarizer在R
- 30. 初學者:Django ModelForm替代小部件
'constexpr'會帶來什麼好處?宏是常量表達式,不是嗎? – Pubby 2013-03-22 19:37:42
@Pubby:'constexpr'與宏:主要好處是乾淨的命名空間處理,並且像[this one](http://stackoverflow.com/q/6563810/1468366)這樣的問題可能不太可能。 'constexpr'與簡單的'const':可以確定在編譯時使用它們。計算模板參數。 – MvG 2013-03-22 19:41:59