草庐IT

C++ uniform_int_distribution 总是在第一次调用时返回 min()

在标准库的至少一个实现中,第一次调用std::uniform_int_distribution不返回随机值,而是返回分布的最小值。也就是说,给定代码:default_random_engineengine(any_seed());uniform_int_distributiondistribution(smaller,larger);autox=distribution(engine);assert(x==smaller);...x实际上会是smaller对于any_seed()的任何值,smaller,或larger.要在家一起玩,您可以尝试codesample在gcc4.8.1中演

c++ - float 的类内静态 const 初始化与 C++ 中的 int 有何不同?

我有一个包含staticconst成员的类,我正在类声明中对其进行初始化:#includeclassFoo{public:staticconstinti=9;staticconstfloatf=2.9999;};intmain(){std::cout当使用带有选项--std=c++11的GCC4.8.2编译时,它给出了这个编译错误:foo.cpp:7:32:error:‘constexpr’neededforin-classinitializationofstaticdatamember‘constfloatFoo::f’ofnon-integraltype[-fpermissive]

c++ - 是否有任何 c/c++ 编译器可以警告(或给出错误)或枚举转换为 int?

清理使用硬编码整数文字而不是枚举的旧c/c++代码,找到函数声明已被正确重构而不是正文的地方是乏味的。例如enumimportant{little=1,abit=2,much=3};voidblah(inte){//magicstuffhere}voidboing(inte){...}voidguck(importante){switch(e){case3://thiswouldbeagoodplaceforawarningblah(e);//andthisbreak;default:boing((int)e);//butthisisOK(althoughimperfectandawa

c++ - 如何在头文件中声明类型转换并在cpp文件中实现?

它对我不起作用。我有一个头文件和一个cpp文件。需要定义一个从我的类到INT的转换运算符,但在H文件中声明它并在cpp文件中实现时它会给我“语法错误”。也许我的语法错误?在我在“公共(public)”中的H文件中:operatorint();在我的cpp文件中:A::operatorint(){returnmNumber;}如果我在H文件中实现该功能,它就可以工作,但我不想那样做。谁能帮忙? 最佳答案 我还想将类声明与实现分开。关键缺失的成分是const://Foobar.hppclassFoobar{public:Foobar()

c++ - yaml-cpp 库的 API 文档

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我决定使用yaml-cppv0.3库来解析我维护的FOSS守护进程的配置文件。我已经决定转向新的0.5API,但到目前为止我最大的问题是除了这个之外似乎没有任何合适的文档:https://github.com/jbeder/yaml-cpp/wiki/Tutorial...还有一些第三方教程作为介绍很好,但在yaml-cpp源代码中似乎没有任何Doxygen注释。某处

未签名的int到字节

我正在尝试创建一个自定义输入流。我的问题是,read()方法从0-255返回整数,但是我需要将其转换为字节,解密它,然后将其转换回整数。如何?我需要类似的东西:InputStreamin=...;OutputStreamout=...;intunsigned=in.read();bytesigned=unsignedIntToSignedByte(unsigned);//from-128to127...//Editingithereoutputstream.write(signedByteToUnsignedInt(signed));//from0-255看答案注意到创建自己的加密是不安全的,

c++ - 指向 deque<int>::push_back 的指针

#include#includeusingnamespacestd;main(){typedefvoid(deque::*func_ptr)(int);func_ptrfptr=&deque::push_back;}我试图获取指向该函数的指针,但出现编译错误error:cannotconvert‘void(std::deque::*)(constvalue_type&){akavoid(std::deque::*)(constint&)}’to‘func_ptr{akavoid(std::deque::*)(int)}’ininitializationfunc_ptrfptr=&deq

c++ - 如何在 Windows 上构建 Apache ActiveMQ-CPP(和 APR)?

我正在尝试获取一些用C++编写的功能,以便与位于Linux机器上的ApacheActiveMQ(它native使用JMS)进行通信。为了建立这种联系,我尝试在我的Windows7机器(开发机器)上设置ApacheActiveMQ-CPP,但我目前面临一些主要问题。据我所知,ActiveMQ-CPP依赖于ApachePortableRuntime/APR,如here所述.我的问题是,我什至无法构建APR,因此无法开始使用ActiveMQ-CPP。我关注了thisguide从字面上看,在并行目录中设置,将版本名称重命名为标准名称并将启动项目更改为libaprutil(使用动态库),但没有任

C++0x 用基于范围的 for 循环替换 for(int i;;) 范围循环的方法

所以我一直在使用GCC4.6进入新的C++,它现在具有基于范围的for循环。我发现这非常适合迭代数组和vector。主要出于审美原因,我想知道是否有办法用它来代替标准for(inti=min;i用类似的东西for(int&i:std::range(min,max)){}新的C++标准中是否有内置的东西允许我这样做?还是我必须编写自己的范围/迭代器类? 最佳答案 我在任何地方都看不到它。但这将是相当微不足道的:classrange_iterator:publicstd::input_iterator{intx;public:range

通过模板对unsigned int的C++限制

我正在使用一个模板将整数类型转换为二进制值的字符串表示形式。我使用了以下内容:templatestd::stringToBinary(constT&value){conststd::bitset::digits+1>bs(value);conststd::strings(bs.to_string());returns;}它适用于int但不能用unsignedint编译:unsignedintbuffer_u[10];intbuffer_i[10];...ToBinary(buffer_i[1]);//compileandworksToBinary(buffer_u[1]);//does