Pet*_*oot 5 c++ numeric-limits c++11
我是SO的新手,这是我的第一个问题,但我已经阅读了规则,我希望我不会破坏它们中的任何一个.
我最近开始学习编程,并选择C++作为我的第一语言.今天我已经到了需要帮助才能做出正确决定的地步.我正在学习第六版C++ Primer Plus,到目前为止,作者只介绍了C宏,并且没有说过关于numeric_limits模板的一个单词(至少我认为它是一个模板),我从互联网上学到了我的好奇心.
所以,现在我有点迷失,因为如果我理解正确,numeric_limits是一种检查C++类型限制的现代方法,因为它易于扩展.此外,C宏中的AFAIK没有像char16_t这样的C++ 11类型的定义.
虽然只搜索我发现的那个问题,但提供的答案虽然有用,但不幸的是他们没有回答对我来说特别有趣的事情.实际上他们大多都很老了.
现在,具体问题:
基于对代码执行速度的需求,未来的安全性和实用性(我不太关心简单性)是否更好的想法使用那些旧的C宏,还是应该考虑我提到的方面坚持使用numeric_limits?
请原谅我英语中的任何错误.这不是我的母语.
对于大多数代码,C的宏或C++的std::numeric_limits工作正常.在C++ 03有一个问题是,min()和max()成员不能产生常量表达式,但这个问题的解决,是C++ 11的constexpr.
这两种方法都是完全类型安全的,如果您可以测量程序的两个版本之间的差异,我会感到惊讶,这两个版本的区别仅在于获得类型属性的方式.宏不可替代的主要区域是模板:模板实体需要固定的名称,而宏不能像那样工作(它们在编译期间也在错误的时间扩展).
就个人而言,我总是使用std::numeric_limits<T>,主要是因为我可以在我的所有代码中使用它,我可以更好地记住这些名称.