草庐IT

unique_image

全部标签

C++ - vector<> 中的 std::unique_ptr 是 nullptr

我想将Particle对象存储在vector对象中,以便稍后访问它。这些粒子(Electrons和Protons)继承自包含toString()虚方法的Particle类。此toString()方法随后在Electron和Proton类中被覆盖。当我读取vector容器时,我想访问Electron或Proton特定的toString()方法,而不是粒子。显然,一种方法是使用std::unique_ptr。这是我尝试运行的代码的一部分:intmain(){/**/std::vector>particles(nbParticles);particles.push_back(std::uni

c++ - 在没有 std::move 的情况下如何按值返回 unique_ptr?

这个问题在这里已经有了答案:Returningunique_ptrfromfunctions(7个答案)关闭8年前。std::unique_ptrptr(){std::unique_ptrp(newint(3));returnp;//Whydoesn'tthisrequireexplicitmoveusingstd::move?}//Whydidn'tthedatapointedtoby'p'isnotdestroyedherethoughpisnotmoved?intmain(){std::unique_ptra=ptr();//Whydoesn'tthisrequirestd::m

c++ - boost 序列化 std::unique_ptr 支持

boost序列化库支持std::unique_ptr的序列化吗?我试图编译下面的代码,但如果我包含boost::archive::text_oarchiveoa(ofs);oa行,编译器(顺便说一句,带有-std=c++11标志的gcc4.7)抛出一个错误/usr/include/boost/serialization/access.hpp:118:9:错误:‘classstd::unique_ptr’没有名为‘serialize’的成员#include#include#include#include#includeclassMyDegrees{public:voidsetDeg(in

c++ - 尽管使用 unique_ptr 内存泄漏

我有一个类的构造函数,它用传递给它的值初始化该类内部的unique_ptr。出于某种原因,valgrind提示内存泄漏:22,080(24direct,22,056indirect)bytesin1blocksaredefinitelylostinlossrecord6of6at0x4C2C7A7:operatornew(unsignedlong)(in/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)by0x4A64FB:VectorBasedNodeOrder::VectorBasedNodeOrder(VectorBasedN

C# 或 C++ 游戏 : many 16 color images loaded into RAM. 有效的解决方案?

我正处于制作格斗游戏的计划阶段,不确定如何处理与内存相关的问题。背景资料:-仍在争论是使用C#(XNA)还是C++。在我们探索如何用两种语言解决这个问题之前,我们不想做出任何promise。-如果可能,使用最大256MBRAM会更好。-将同时出现两个角色,这些角色只能在战斗之间改变。在战斗之间有时间加载/释放内存,但游戏需要在战斗期间以每秒60帧的恒定帧数运行。每帧16.67ms-每个字符的图像总数在数百个以下。每张图片大约为200x400像素。在任何给定时刻,每个角色只会显示一张图像。根据我的计算,未压缩的每张图像大约需要300kb;整个角色超过100MB。这太接近256MB的限制了

c++ - 在 map 中使用 unique_ptr 时删除 std::pair 中的函数

我有一段C++代码,我不确定它是否正确。考虑以下代码。#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){vector>>v;v.resize(5);returnEXIT_SUCCESS;}GCC编译这段代码没有问题。然而,英特尔编译器(版本19)因错误而停止:/usr/local/[...]/include/c++/7.3.0/ext/new_allocator.h(136):error:function"std::pair::pair(conststd::pair&)[with_T1=cons

AI绘画后面的论文——ControlNet:Adding Conditional Control to Text-to-Image Diffusion Models

AI绘画后面的论文——ControlNet:AddingConditionalControltoText-to-ImageDiffusionModels代码:lllyasviel/ControlNet:Letuscontroldiffusionmodels!(github.com)论文地址最近AI绘画又双叒叕进化了,前一次还只能生成二次元,这次三次元都能生成了。这次AI绘画这么火爆的原因跟下面这篇文章脱不开关系,它将AI绘画带到了一个新的高度。摘要我们提出了一个神经网络结构controlnet网络来控制预训练的大扩散模型以支持额外的输入条件。controlnet网络以端到端的方式学习任务特定条

c++ - `unique_ptr` 上的原子操作

std::shared_ptrhasspecializationsforatomicoperations像atomic_compare_exchange_weak和family,但我找不到关于std::unique_ptr的等效特化的文档。有没有?如果不是,为什么不呢? 最佳答案 可以提供std::shared_ptr的原子实例的原因并且不可能为std::unique_ptr这样做在他们的签名中暗示。比较:std::shared_ptr对比std::unique_ptr其中D是删除器的类型。std::shared_ptr需要分配一个

c++ - std::move 和 unique_ptr::reset 之间有什么区别?

对于std::unique_ptr的p1和p2,std::move()有什么区别>和std::unique_ptr::reset()?p1=std::move(p2);p1.reset(p2.release()); 最佳答案 根据[unique.ptr.single.assign]/2中移动分配的标准规范,答案应该是显而易见的:Effects:Transfersownershipfromuto*thisasifbycallingreset(u.release())followedbyanassignmentfromstd::forw

c++ - 使用 VS2012 编译 libffi 失败并出现 fatal error LNK1281 : Unable to generate SAFESEH image

使用VS11编译libffi会出现以下链接器错误libffi\libffi-3.0.9\ms\Win32\Debug\ffi.dll:fatalerrorLNK1281:UnabletogenerateSAFESEHimage.同一项目在VS10上编译正常,但在VS2012自动升级后,它开始出现链接器错误MSDN中的解释太隐晦而且帮助不大我可能会用/SAFESEH:NO重建,但我不确定其中的含义。请告知可能出现的问题。 最佳答案 没有SAFESEH的主要含义是您的应用程序不会被Windows8商店或Windows8desktopce