草庐IT

c++ - 模棱两可的期望值

我在网站上看到这个问题(我不会使用确切的措辞或提及网站),Supposeakidgetshispocketmoneyonthe15thofeverymonth,accordingtowhichdayisitonthatdate,Letssayhegets1coinonMonday,2coinsonTuesday...7coinsonSunday.WhatistheExpectednumberofcoinshewillgetonthe15thofarandommonth?起初我虽然每个的概率是1/7所以答案应该是4,但它说错误答案。然后想了想如何选择一个随机月份,并记得日历每400年重复

c++ - 为什么我不能使用与 'const int*' 相同的 'const char*' 创建一个 int 数组?

为什么我可以用这种方式创建一个字符串或字符数组:#includeintmain(){constchar*string="Hello,World!";std::cout?并且它正确输出第二个元素,而如果没有数组的下标符号[]我就不能创建整数类型的数组?char的一个和这个有什么区别:constint*intArray={3,54,12,53};。 最佳答案 “为什么”是:“因为字符串文字很特殊”。字符串文字存储在二进制文件中,作为程序本身的常量部分,constchar*string="Hello,World!";只是将文字视为存储在别

c++ - 无法将类型 'int&' 的非常量左值引用绑定(bind)到类型 'int' 的右值

以下代码编译失败:#includeusingnamespacestd;intadd2(constint&x){returnx+2;}templateTadd2T(T&&x){returnadd2(std::forward(x));}intmain(intargc,char**argv){intx=0;cout通过这条消息:main.cpp:Ininstantiationof'Tadd2T(T&&)[withT=int&]':main.cpp:26:20:requiredfromheremain.cpp:12:16:error:cannotbindnon-constlvaluerefer

c++ - 调用对象类型 'void (B::*)(int)' 不是函数或函数指针

我正在尝试将方法作为函数参数传递。这是一个简化的示例,它返回一个我不理解的编译错误classB{private:intj;public:voidfoo(inti){std::coutj编译时用g++-std=c++11b.cpp-ob我明白了b.cpp:22:50:error:calledobjecttype'void(B::*)(int)'isnotafunctionorfunctionpointervoidcall(void(B::*fun)(inti),inti){b.*fun(i);}~~~^b.cpp:31:12:error:calltonon-staticmemberfun

c++ - std::less<int> 的正确参数类型是什么?

我正在制作一个类——一个BST——它可以比较模板化节点,这需要一个比较器,例如std::less。树是这样的:templateclasstree{private:comparatorcompare;public:explicittree(comparatorfunctor);};但我似乎找不到应该在我的应用程序中输入哪种模板类型。treemy_bst(std::less);error:wrongnumberoftemplatearguments(1,shouldbe2)bst::treemy_bst(std::less);这是有道理的,因为我的模板类型不完整。我应该如何分析我的构造函数

c++ - 构造函数链接不使用类成员的默认值?

我有两个类(class)Unit和Archer。Archer继承自unit。我尝试使用构造函数链接来设置基类的统计信息,但如果我使用以下代码,统计信息似乎设置为零:#includeusingnamespacestd;classUnit{intdamage=0;intcurHp=0;intmaxHp=1;intrange=0;intcost=0;public:Unit(int_damage,int_maxHp,int_range,int_cost){damage=_damage;curHp=maxHp=_maxHp;range=_range;cost=_cost;}intgetCost(

c++ - char c = 255 的值转换为 int

我的问题是关于Stroustrup的《C++编程语言》第4版一书中的一段话。他举了一个例子charc=255;//255is‘‘allones,’’hexadecimal0xFFinti=c;以及如何在char有符号或无符号的机器上转换它的解释。i的值是多少?不幸的是,答案是不确定的。在8位字节的实现中,答案取决于扩展为int时“全部”char位模式的含义。在char没有符号的机器上,答案是255。在char有符号的机器上,答案是−1。我的问题是为什么它会是-1,这不是取决于机器上使用的二进制数表示形式吗?如果它使用一个补码,它不是0(-0)吗?如果使用二进制补码,它不是-1吗?

c++ - 如何在避免代码重复和名称冲突的同时实现同一算法的多个版本?

我用C++开发了插入排序和快速排序算法。现在,我打算创建至少四种快速排序算法的变体。他们在如何选择主元以及是否对小列表使用插入排序方面会有所不同。在Java或C#中,为避免代码重复和名称冲突,我会在单独的类文件中实现每个版本的Quicksort算法并使用继承。具体来说,我会创建以下类:QuicksortFixedPivotQuicksortRandomPivotQuicksortFixedPivotInsertion-使用插入排序对最多k个元素的子数组进行排序QuicksortRandomPivotInsertion但是,根据我的理解,像Quicksort这样的“独立”算法通常不会在C

c++ - 是否可以换出 C++ 中的基类?

假设我有一个基类A1和派生类B1和B2。例如(人为的):classA1{public:intfoo(intinput);};classB1:publicA1{public:intbar(intinput){returnfoo(input);}};classB2:publicA1{public:intbar(intinput){returnfoo(foo(input));}};是否可以创建与B1和B2相同但派生自A2而不是A1的类C1和C2,而不必重新定义“B”?即,我只想将“foo”换成C1和C2中的另一个函数,而无需重新定义如下:classA2{public:intnewFoo(in

c++ - 如何在C++中将字符串转换为整数

这个问题在这里已经有了答案:关闭13年前。我正在尝试将bar中的值复制到整数foo中。这就是我目前所拥有的。当我运行它时,我得到一个不同的十六进制值。任何帮助都会很棒。intmain(){stringbar="0x00EB0C62";intfoo=(int)bar;cout所以输出应该是0x00EB0C62。