草庐IT

UINT_PTR

全部标签

c++ - 将带有自定义删除器的 unique_ptr 移动到 shared_ptr

我有一个函数可以创建一个带有自定义删除器的unique_ptr并返回它:autogive_unique_ptr(){autodeleter=[](int*pi){deletepi;};int*i=newint{1234};returnstd::unique_ptr(i,deleter);}在该函数的客户端代码中,我想将unique_ptr移动到shared_ptr中,但鉴于我不知道该怎么做在函数之外不知道我的自定义删除器的decltype。我猜它应该是这样的:autouniquePtr=give_unique_ptr();autosharedPtr=std::shared_ptr(st

c++ - 为什么不允许 `std::uniform_int_distribution<uint8_t>` 和 `std::uniform_int_distribution<int8_t>`?

作为documentationsays:Theeffectisundefinedifthisisnotoneofshort,int,long,longlong,unsignedshort,unsignedint,unsignedlong,orunsignedlonglong.如果我不关心范围,我可以屏蔽较大类型的位以生成随机数。如果不是,那就更复杂了。为什么不默认提供字节类型? 最佳答案 关于这个uniform_int_distributionshouldbepermitted有一个图书馆工作组未解决[1]问题它说,除其他外:Iam

c++ - 为什么不允许 `std::uniform_int_distribution<uint8_t>` 和 `std::uniform_int_distribution<int8_t>`?

作为documentationsays:Theeffectisundefinedifthisisnotoneofshort,int,long,longlong,unsignedshort,unsignedint,unsignedlong,orunsignedlonglong.如果我不关心范围,我可以屏蔽较大类型的位以生成随机数。如果不是,那就更复杂了。为什么不默认提供字节类型? 最佳答案 关于这个uniform_int_distributionshouldbepermitted有一个图书馆工作组未解决[1]问题它说,除其他外:Iam

c++ - 表示 uint64_t 最大值的宏

我正在寻找一个表示uint64_t最大值的宏,因为UINT_MAX用于unsignedint。即我需要保证这个值是(1我尝试使用UINT64_MAX,但使用g++编译会导致:'UINT64_MAX'wasnotdeclaredinthisscope值得一提的是,我在使用UINT64_MAX之前的代码中有这行#define__STDC_LIMIT_MACROS。我很惊讶没有在网络上找到有关它的有用信息。 最佳答案 使用cstdint可移植的header可能是一个相当大的挑战(某些MSVC实现中缺少它)。同时numeric_limits

c++ - 表示 uint64_t 最大值的宏

我正在寻找一个表示uint64_t最大值的宏,因为UINT_MAX用于unsignedint。即我需要保证这个值是(1我尝试使用UINT64_MAX,但使用g++编译会导致:'UINT64_MAX'wasnotdeclaredinthisscope值得一提的是,我在使用UINT64_MAX之前的代码中有这行#define__STDC_LIMIT_MACROS。我很惊讶没有在网络上找到有关它的有用信息。 最佳答案 使用cstdint可移植的header可能是一个相当大的挑战(某些MSVC实现中缺少它)。同时numeric_limits

c++ - shared_ptr 与非指针资源

在C++11中是否可以使用shared_ptr来控制非指针资源?可以使用unique_ptr来管理非指针资源。这是通过实现一个自定义删除器类来完成的,该类提供:一个typedef{TYPE}指针;其中{TYPE}是非指针资源类型operator()(pointer)释放受控资源...然后使用自定义删除器作为第二个模板参数实例化一个unique_ptr。例如,在Windows下,可以创建一个unique_ptr来管理servicecontrolhandle.这个句柄类型不是通过调用delete来释放的,而是通过调用CloseServiceHandle()来释放的。.这是执行此操作的示例代

c++ - shared_ptr 与非指针资源

在C++11中是否可以使用shared_ptr来控制非指针资源?可以使用unique_ptr来管理非指针资源。这是通过实现一个自定义删除器类来完成的,该类提供:一个typedef{TYPE}指针;其中{TYPE}是非指针资源类型operator()(pointer)释放受控资源...然后使用自定义删除器作为第二个模板参数实例化一个unique_ptr。例如,在Windows下,可以创建一个unique_ptr来管理servicecontrolhandle.这个句柄类型不是通过调用delete来释放的,而是通过调用CloseServiceHandle()来释放的。.这是执行此操作的示例代

c++ - 使用 std::vector< std::shared_ptr<const T>> 是反模式吗?

很长一段时间我都在使用std::vector和std::shared_ptr手牵手。最近开始使用std::shared_ptr每当需要指向const对象的指针时。没关系,因为std::shared_ptr可以转换为std::shared_ptr然后他们共享相同的引用计数器,一切都感觉很自然。但是当我尝试使用std::vector>等结构时我遇到了麻烦。为简化起见,我将表示这两种结构:templateusingSharedPtrVector=std::vector>;templateusingSharedConstPtrVector=std::vector>;问题是虽然SharedPtr

c++ - 使用 std::vector< std::shared_ptr<const T>> 是反模式吗?

很长一段时间我都在使用std::vector和std::shared_ptr手牵手。最近开始使用std::shared_ptr每当需要指向const对象的指针时。没关系,因为std::shared_ptr可以转换为std::shared_ptr然后他们共享相同的引用计数器,一切都感觉很自然。但是当我尝试使用std::vector>等结构时我遇到了麻烦。为简化起见,我将表示这两种结构:templateusingSharedPtrVector=std::vector>;templateusingSharedConstPtrVector=std::vector>;问题是虽然SharedPtr

c++ - 带 malloc 和 free 的 shared_ptr

我在包含c和cpp的大型应用程序中工作。所有文件都保存为cpp扩展名,但代码是用c-style编写的。我的意思是它是定义结构而不是通过malloc和realloc和calloc分配内存的类。最近他们已经安装了boost库所以我打算在我现有的代码库中使用所以我有一些以下问题。我可以将std::shared_ptr与malloc和free一起使用吗?如果是,谁能指出我的示例代码库?如果我在我的应用程序中创建std::shared_ptr并将此指针传递给另一个使用malloc或calloc的函数,它会影响任何功能吗?或者换句话说:对于以下代码,如何使用std::shared_ptr实现类似的