草庐IT

c++ - fabsf 是 C++11 中 std 命名空间的一部分吗?

页面https://en.cppreference.com/w/cpp/numeric/math/fabs提到std::fabsf从C++11开始可用。但是,当我使用G++6.3.0编译甚至使用std::fabsf的最简单程序时,它说fabsf不是std.#includeintmain(){return(int)std::fabsf(0.0f);}哪个是对的?G++6.3.0没有将它包含在std中是错误的,还是上面的页面在C++11中将它作为std的一部分提及是错误的?如果是G++出错了,那会在以后的版本中修复吗? 最佳答案 是的,

c++ - C++11 中的整数除法

我注意到C++11的5.6节有一些措辞变化。(我正在查看日期为2011-02-28的C++标准草案N3242。)新(草案)标准包括以下句子:“对于整数操作数,/运算符生成代数商,并丢弃任何小数部分;”在03标准(ISO-IEC-14882-2003)的5.6中没有这个说法,但我不认为这是一个变化,是吗?这就是C和C++多年来一直工作的方式,除非我失去理智(无论如何都可能发生)。 最佳答案 你不会生气的。5.6/4的脚注说:[C++03footnote74]:Accordingtoworkunderwaytowardtherevisi

c++ - 估计 C++11 中剩余的时间

我正在编写一个进度条类,它每隔n输出一个更新的进度条。滴答到std::ostream:classprogress_bar{public:progress_bar(uint64_tticks):_total_ticks(ticks),ticks_occured(0),_begin(std::chrono::steady_clock::now())...voidtick(){//testtoseeifenoughprogresshaselapsed//towarrantupdatingtheprogressbar//thatwaywearen'twastingresourcesprinti

C++11 从相同类类型的构造函数调用构造函数

有人告诉我,由于C++11的变化,以下内容是可能的:classSomeType{intnumber;public:SomeType(intnew_number):number(new_number){}SomeType():SomeType(42){}};但是当我尝试构建时出现错误:"SomeType"isnotanonstaticdatamemberorbaseclassofclass"SomeType"errorC2614:'SomeType':illegalmemberinitialization:'SomeType'isnotabaseormemberVisualStudio2

c++ - 为什么 C++11 标准中的 INVOKE 工具引用数据成员?

标准的$20.8.2描述了INVOKE工具,该工具主要用于描述如何在整个标准库中使用可变参数列表调用可调用对象:DefineINVOKE(f,t1,t2,...,tN)asfollows:—(t1.*f)(t2,...,tN)whenfisapointertoamemberfunctionofaclassTandt1isanobjectoftypeTorareferencetoanobjectoftypeTorareferencetoanobjectofatypederivedfromT;—((*t1).*f)(t2,...,tN)whenfisapointertoamemberfun

c++ - 具有 C++11 构造的映射函数

既是为了自学实现比简单的基本模板构造更高级的模板构造,又因为它们在很多情况下都很有用,我正在尝试使用c++11构造来实现函数式编程中常见的映射、过滤器和类似函数,例如decltype.我在创建我使用的编译器可以处理的函数原型(prototype)时遇到了问题,所以我不得不问你如何创建这样的东西:////Takesaniterable,appliesafunctiontoeveryelement,andreturnsavectoroftheresults//templateautomap(constT&iterable,Funcfunc)->std::vector{//bodysnipp

C++ 11 替代 pthread_cond_timedwait

我需要让一个线程等待直到任一个超时已过,或者一个变量被另一个线程改变经过一些研究,我发现pthreads有pthread_cond_timedwait,如果我要使用pthreads,这在这种情况下可能很有用。我改用C++11线程。在不完全传递给pthreads的情况下,是否有适合我的替代方案? 最佳答案 是的,你想要std::condition_variable来自,它有一个成员函数wait_for这需要一段时间。Thecondition_variableclassisasynchronizationprimitivethatcan

C++11 从频繁变化的范围内生成随机数

问:如何从先验未知范围生成(许多)均匀分布的整数?就性能(数百万个生成的数字)而言,首选方式是什么?上下文:在我的应用程序中,我必须在许多地方生成许多伪随机数。我对生成器使用单例模式来保持应用程序运行的可重复性。在我的例子中,分布总是均匀的,但问题是有太多可能的范围来预先制作C++11风格的分布对象。我的尝试:对此有两个明显的解决方案,第一个是使用一次性分布对象,第二个是使用模数将随机数从尽可能广泛的范围转换为所需的范围。但不知何故,我怀疑这些是最好的:)#include#include#include"limits.h"usingnamespacestd;mt19937mt;unif

c++ - C++11 是否引入了不区分大小写的字符串比较算法?

刚刚在GCC4.8上迁移到C++11,并且最好从boost::iequals迁移到STL。我搜索了互联网,但没有看到任何迹象表明std::iequals或新的std::basic_string方法在STL中原生支持这一点。如果这在C++11中不存在,那么自C++03以来解决此问题的方法是否发生了变化(即不同的解决方法?),或者这里仍然首选boost?提前致谢。` 最佳答案 不,C++11没有引入不区分大小写的字符串比较函数。您现在需要坚持使用Boost。希望这对您有所帮助! 关于c++-

c++ - 为什么在 C++11/C++14 中有针对自动和大括号初始化器的特殊类型推导规则?

在他的CppCon2014演讲中"TypeDeductionandWhyYouCare",ScottMeyers提出了一个问题,为什么在C++11/C++14标准中有关于auto和大括号初始化器的特殊规则(他的问题从at36m05s开始)。auto与braced-init-list组合的语义在§7.1.6.4/6中定义。我想了想,也想不出一个用例。到目前为止,我所看到的最接近的例子是BjarneStroustrup使用它的一个例子。在他的Cpp2014talk"MakeSimpleTasksSimple!",他曾经使用auto来捕获初始化器(但只是作为一种变通方法)。这是代码(幻灯片3