草庐IT

unique_lock

全部标签

c++ - 为什么 unique_ptr operator* 不是 noexcept?

这个问题在这里已经有了答案:"No-throwdereferencing"ofstd::unique_ptr(1个回答)关闭4年前。在为我的爱好操作系统实现一个基本的std库时,我遇到了这个并想知道为什么:operator->()和T*get()都被标记为noexcept,但是operator*()不是。根据引用资料,它应该等同于*get(),这将允许它成为noexcept并查看一些实现,我看不出为什么不是。为什么unique_ptr的取消引用运算符没有标记为noexcept?

c++ - boost::asio 与 boost::unique_future

根据http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/overview/cpp2011/futures.html,我们可以将boost::asio与std::future一起使用。但是我找不到任何关于使用boost::unique_future的信息,它有更多的功能,比如then()。我该如何使用? 最佳答案 Boost.Asio仅提供一流的异步操作支持,以返回C++11std::future或stackfulcoroutines中的实际值.尽管如此,requireme

The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statement

今天发现mysql报错,记录下问题原因;错误信息:TheMySQLserverisrunningwiththeLOCK_WRITE_GROWTHoptionsoitcannotexecutethisstatement向aliyun写入数据,报错。阿里云的一个保护策略,空间剩余不足时,禁止数据写入;可用navicat执行以下sql查看剩余空间大小;SELECTTABLE_SCHEMA,concat(TRUNCATE(sum(data_length)/1024/1024,2),‘MB’)ASdata_size,concat(TRUNCATE(sum(index_length)/1024/1024,

c++ - make_unique 不编译

我正在尝试为std::unique_ptr创建和使用make_unique,就像std::make_shared存在于std::shared_ptrdescribedhere.赫伯萨特mentionsmake_unique的可能实现如下所示:templatestd::unique_ptrmake_unique(Args&&...args){returnstd::unique_ptr(newT(std::forward(args)...));}它似乎对我不起作用。我正在使用以下示例程序://testproject.cpp:Definestheentrypointfortheconsole

c++ - 使用带有 unique_ptr 的自定义删除器

借助shared_ptr,您可以使用自定义删除器,例如:autofp=shared_ptr(fopen("file.txt","rt"),&fclose);fprintf(fp.get(),"hello\n");这将记住fclose文件,无论函数如何退出。但是,引用局部变量似乎有点矫枉过正,所以我想使用unique_ptr:autofp=unique_ptr(fopen("file.txt","rt"),&fclose);但是,这不会编译。这是缺陷吗?有简单的解决方法吗?我是否遗漏了一些微不足道的东西? 最佳答案 应该是unique

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++ - "Locking"两个 vector 并对它们进行排序

这个问题在这里已经有了答案:HowcanIsorttwovectorsinthesameway,withcriteriathatusesonlyoneofthevectors?(9个回答)关闭8个月前。我有这两个vector的mass和velocity大小相同N.它们包含有关N个粒子的质量和速度的信息。mass[i]和velocity[i]因此是第i个粒子的属性在C++中是否可以将这两个vector“锁定”在一起并按质量递增的顺序对它们进行排序?因此,在对vectormass进行排序之后应按升序排列,速度vector应包含排序质量的相应速度例如在排序质量=(4,2,1,3)和速度=(1

c++ - 我是否必须使用 weak_ptr.lock() 来测试它是否指向有效对象?

创建一个临时的shared_ptr只是为了查看weak_ptr是否指向一个有效的对象似乎有点低效。我什至不想访问该对象。这是因为我有一个从shared_ptrvector返回weak_ptr的函数,如果它返回一个空的weak_ptr那么这意味着该对象不存在该GUID。所以我只是在测试一个对象是否存在。有没有另一种方法可以在不创建shared_ptr的情况下检查weak_ptr是否为空? 最佳答案 您可以使用expired()成员函数。 关于c++-我是否必须使用weak_ptr.lock

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