是否有任何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中使用boost數學常量
- 3. constexpr VS常量VS constexpr常量
- 4. 對constexpr函數斷言的替代
- 5. 使用constexpr的替代元組迭代
- 6. php常量數學運算
- 7. C++在constexpr類中的常量指針
- 8. 替代全局變量/常量
- 9. 迭代與constexpr
- 10. 如何定義constexpr變量
- 11. constexpr vs const:會用constexpr代替const更好的幫忙編譯優化?
- 12. 學說2.1 - DAYOFWEEK函數的替代?
- 13. Sympy替代數學表達式
- 14. 與數學表達式VIM替代
- 15. java中的數學公式替代
- 16. constexpr數組成員是否編譯時間常量?
- 17. 翻譯替代常量在PHP
- 18. 替代使用非常量的開關
- 19. C#接口和宏常量替代品
- 20. SKSpriteNode zrotation M_PI真氣
- 21. 使用數學常量的XSD限制
- 22. Clang ++是否支持libC++支持constexpr數學函數
- 23. [scikit學習]:異常檢測 - OneClassSVM的替代方案
- 24. constexpr計算數量的實際限制
- 25. 替換#defines常量
- 26. 替代變量?
- 27. %替代變量
- 28. 替代變量?
- 29. 替代變量&&&
- 30. 使用指向常量數據的指針的替代方法?
'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