草庐IT

LONG_PTR

全部标签

c++ - 如何使用 std::auto_ptr 声明动态数组?

我正在尝试声明一个动态int数组,如下所示:intn;int*pInt=newint[n];我可以用std::auto_ptr做到这一点吗?我试过类似的方法:std::auto_ptrpInt(newint[n]);但是它不编译。我想知道我是否可以使用auto_ptr构造声明一个动态数组,以及如何声明。谢谢! 最佳答案 不,你不能,也不会:C++98在数组方面非常有限,auto_ptr是一个非常笨拙的野兽,它通常不会做你需要的事情。您可以:使用std::vector/std::deque,或std::array,或者使用C++11和

记一次Spring for Kotlin中JacksonConfig配置Long转String失败

目录起因真相解决方案起因众所周知,浏览器在处理Long类型(比如雪花算法生成的id)时,往往会出大事情。浏览器在处理长整型(Long)类型时可能会遇到问题,主要原因是浏览器在处理数字时有限制。一般来说,浏览器的JavaScript引擎使用64位浮点数来表示数字。然而,JavaScript的Number类型只能安全地表示-253到253之间的整数。当超过这个范围时,会有精度丢失的问题。例如,如果使用雪花算法生成的长整型id超过了JavaScriptNumber类型的范围,就会出现问题。雪花算法生成的id是一个非常大的数字,如果直接在浏览器中处理,可能会导致精度丢失或溢出。此外,浏览器在处理长整型

c++ - 是否有 auto_ptr 的替代品可以与 c++11 中的 boost ptr_map 一起使用

在c++11中,auto_ptr已弃用,取而代之的是更合理的unique_ptr。唉,如果你使用boost::ptr_map,auto_ptr就完成了一个非常方便的用途:std::auto_ptrpLayer(newLayer());mRawLayerPtrMap.insert(layerName,pLayer);是否有可能使用与c++11类似的东西。这个我知道Layer*pLayer=newLayer();mFusedLayers.insert(fusedLayerName,pLayer);有效,但auto_ptr在一些更复杂的场景中有它的优点。是否有适用于C++11的替代品?

c++ - 为什么 shared_ptr<void> 而不是 shared_ptr<HANDLE>

基于http://en.highscore.de/cpp/boost/smartpointers.html#smartpointers_shared_pointer#include#includeintmain(){boost::shared_ptrh(OpenProcess(PROCESS_SET_INFORMATION,FALSE,GetCurrentProcessId()),CloseHandle);SetPriorityClass(h.get(),HIGH_PRIORITY_CLASS);}问题:为什么h定义为boost::shared_ptr而不是boost::shared_

c++ - std::find 跨一组 shared_ptr

我确定我在这里做了一些愚蠢的事情,但我看不到它。为什么不能编译以下内容?#include#include#include#include//Aclasstoplaywith.Encapsulatesaname.classStringClass{public:StringClass(std::stringconst&name):MyName(name){}std::stringconst&Name()const{returnMyName;}private:std::stringMyName;};//Thesetofinstancesof"StringClass".std::vector>

c++ - 通过 std::unique_ptr 扩展变量的生命周期

使用C++11unique_ptr,对象的生命周期似乎被延长到其通常范围之外,如下面(相当人为的)示例所示:#include#includeusingnamespacestd;intmain(){unique_ptruPtr(nullptr);{charc='X';cout输出:c=Xc=Y通常在作用域结束时释放的字符c一直存在到程序结束。第二个输出是“Y”,表明unique_ptr不只是简单地复制它的值。是否建议以某种方式延长变量的生命周期?这是否安全,或者它是否具有与引用相同的危险? 最佳答案 WiththeC++11uniqu

C++11 通过原始指针或引用获取 unique_ptr 的所有权?

编辑我想下面的代码会假设我有一个addChild()的重载版本,它接受一个已经包装在unique_ptr中的Sprite,在那里取得所有权就可以了。只是想我会在其他人之前提到这一点。:)。经过漫长的一天,我在这里编写了所有代码,因此请将其视为伪代码质量,仅用于演示手头的问题。原始问题我正在编写一个框架,其中有一个显示列表、parent/child等。我认为使用unique_ptrforexample是这里的方法,因为当您将子项添加到父显示对象时,父项现在成为该子项的唯一所有者是合乎逻辑的。但是,将有可用的方法,例如getChildAt(index)和getChildByName等,我认

c++ - 为什么使用 shared_ptr 创建弱指针?

我写了以下简单的代码,#include#includestructFoo{Foo(){std::coutp1(newFoo);//thislinep1->bar();std::shared_ptrp2(p1);}然后在监window口中,我得到了,p2std::__1::shared_ptrptr=0x100104350strong=2weak=1p1std::__1::shared_ptrptr=0x100104350strong=2weak=1现在,我能理解strong=2,但为什么weak=1呢?其次,在代码中我将代码更改为,std::shared_ptrp1(std::move

c++ - 缩写类型名称 long long 与 long long int,是否符合标准?

我看到的大多数代码都使用缩写类型来声明变量,例如longlongx;//longlongintxshorty;//shortinty我浏览了C++11标准(第3.9.1节),类型总是完整声明的,如longlongint。我找不到任何关于缩写类型的提及。我很确定这些缩写符合标准,但想确定是否确实如此。所以我的问题是上面的代码是否完全符合标准。 最佳答案 是的,这是有效的,它包含在draftC++11standard中7.1.6.2简单类型说明符部分说:Table10summarizesthevalidcombinationsofsim

c++ - 为什么 unique_ptr<T>::~unique_ptr 需要 T 的定义?

如果我有一个“酒吧”类://bar.hclassBar{public:Bar(){}};我转发声明与另一个类“Foo”中的std::unique_ptr一起使用://foo.h#includeclassBar;classFoo{public:Foo();private:std::unique_ptrbar_;};我在Foo的实现文件中包含了它的定义://foo.cpp#include"foo.h"#include"bar.h"Foo::Foo():bar_(newBar){}我收到编译时错误“‘sizeof’对不完整类型‘Bar’的无效应用”。我从here了解到和here为了解决这个问