草庐IT

不确定的

全部标签

c++ - 为什么 boost::hash_combine 中的魔数(Magic Number)是十六进制指定的

本例中的魔数(MagicNumber)是0x9e3779b9,以10为基数是2654435769。代码有什么原因吗seed^=hash_value(v)+0x9e3779b9+(seed>2);使用十六进制表示而不是base-10表示?如果将代码中的0x9e3779b9替换为2654435769,功能是否会保持不变? 最佳答案 字面量就是字面量,同一字面量的不同表示形式……字面上相同。但是,表达式(文字或非文字)也有一个类型。等效的字面量应该是2654435769u(注意类型后缀使其成为unsigned)。看看这个简单的测试Live

c++ - stringstream 读取失败是不确定的吗?

我有一些代码在不同的编译器上表现不同:std::stringstrVal="11";std::stringstreamstream(strVal);autovalue=false;if(!(stream>>std::noboolalpha>>value)){//reporterror-thispathistakenonbothcompilers}//"value"is"false"hereoninVS2017,but"true"onGCC4.6行为上的差异是预期的,还是GCC中的错误?根据cppprefence:Ifextractionfails(e.g.ifaletterwasent

c++ - 稳定的时钟在系统范围内稳定吗?

我正在使用FastRTPS在单个Linux系统上的多个进程之间进行通信。它们以数据包的形式交换信息。每个数据包都有一个与其发送或接收时间无关的时间戳。这样可以正确使用传达的信息。我在考虑使用:uint64_ttime_in_microseconds=std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count();获取数据包的时间戳。但是,在单个系统上跨进程的稳定时钟是否稳定?还是只在一个进程内?如果不是,系统时钟在正常情况下会有多少变化?它会“回到过去”多少?(没有手动调整,

c++ - 按指定的分隔符拆分 wstring

我有一个包含文本的std::wstring变量,我需要用分隔符将它拆分。我怎么能这样做?我不会使用会产生一些警告的boost。谢谢编辑1这是一个示例文本:hihowareyou?这是代码:typedefboost::tokenizer,std::wstring::const_iterator,std::wstring>Tok;boost::char_separatorsep;Toktok(this->m_inputText,sep);for(Tok::iteratortok_iter=tok.begin();tok_iter!=tok.end();++tok_iter){cout结果是

c++ - 为什么编译器看不到指定的默认参数值?

观察以下接口(interface)/实现:属性.hclassProperty{public:Property(PropertyCollection*propertyCollection,std::stringkey,std::stringvalue,uint32_tidentifier);属性.cppProperty::Property(PropertyCollection*propertyCollection,std::stringkey,std::stringvalue,uint32_tidentifier=0):propertyCollection(propertyCollect

c++ - 未初始化和不确定之间的区别

我正在阅读Dotheparenthesesafterthetypenamemakeadifferencewithnew有MichaelBurr讨论uninitialized和indeterminate值。想知道它们之间的区别。我的理解是,uninitialized意味着,编译器将分配内存而不是尝试初始化对象。indeterminate->访问此对象可能会导致未定义的行为。如果我错了,请纠正我。还想知道default-initialization和value-initialization的区别。 最佳答案 我认为您的解释很接近,但完全

c++ - 空终止字符串,它真的是由标准规定的吗?

这个问题在这里已经有了答案:Isstring::c_str()nolongernullterminatedinC++11?(4个答案)关闭8年前。讨论众所周知,从C++11开始,std::basic_string被认为具有以空字符结尾的内部存储缓冲区。除其他外,此更改的主要原因是std::basic_string的先前定义仅允许对字符串进行非常有限的并发访问,因此限制了多线程的性能应用程序。(更多关于std::basic_string变化的原因可以在proposalN2534中阅读)。但是,阅读标准我找不到明确指出std::basic_string必须有一个空字符终止的内部存储缓冲区的

如何创建固定的全屏不可滚动Div?

我正在尝试模仿典型的模态。当用户单击某些内容时,模态出现,具有全屏和修复的透明背景。目前我有这个:.thank-outer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;width:100%;height:100vh;overflow:hidden;background:rgba(222,222,222,0.7);}SometextDIV的高度不是浏览器的高度,而是完整页面内容的高度,因此可以滚动。如何更改它,以使DIV的高度仅仅是浏览器的高度?看答案您可以通过设置body元素的overflow财产为hidden。这切断了从

c++ - 不确定有关 C++ Primer 中 Reference 的描述

书上说:因为引用不是对象,所以我们可以不定义对引用的引用。intival=1024;int&refVal=ival;refVal=2;intii=refVal;int&refVal3=refVal;//isn'tthisadefinitionofreftoref?inti=refVal;int&refVal4=10;doubledval=3.14;int&refVal5=dval;然而,该行不是错误,因为refVal3说它只是refVal的另一个别名,而refVal只是ival的另一个名称(refVal3绑定(bind)到refVal绑定(bind)到的对象,即ival)...所以re

c++ - 是在索引一个新的 map 元素并将读取它的东西分配给它未定义的行为,还是只是未指定的?

回答后thisquestion,关于所讨论的代码是否为未定义行为的问题进行了长时间的讨论。这是代码:std::mapword_count;word_count["a"]=word_count.count("a")==0?1:2;首先,众所周知,这至少是未指定的。结果因首先评估作业的哪一侧而异。在我的回答中,我遵循了四个结果案例中的每一个,首先评估哪一方的因素以及该元素是否在此之前存在。还有一个简短的表格出现了:(x=0)=(x==0)?1:2;//startedas(x=0)=(y=="a")?1:2;//changedto我声称它更像这样:(x=0,x)=(x==0)?1:2;//c