草庐IT

unique_ids

全部标签

c++ - 在这种情况下 unique_ptr 的行为应该是什么?

假设我有以下内容:std::unique_ptrpA;pA(newA);在这个复杂的例子中,pA(newA);的行为应该是怎样的?是吗?据我所知,在MSVC2010中,voidoperator()(T*)const;在new之后立即调用fromdefault_delete立即返回并删除指针。而g++(4.7.0)给了我nomatchforcall(std::unique_ptr)(A*)错误。 最佳答案 代码不应编译。std::unique_ptr不会重载operator()。VisualC++2011DeveloperPrevie

c++ - std::unique_ptr<T> 不完整类型错误

我有templateclassqueue{private:structnode{Tdata;std::unique_ptrnext;//compileerroronincompletetypenode(T&&data_):data(std::move(data_)){}};std::unique_ptrhead;node*tail;public:queue():tail(nullptr){}我在VS10的标记行上遇到编译错误。在这种情况下,我是否应该被允许使用不完整的类型(实例化模板-构造函数-这里以int为例)?有解决方法吗?编辑singlethreadedqueue.h(62):e

c++ - thread::get_id (C++11) 是免费的吗?

我想测试调用我的一个类的不同函数的线程。我有一个关键时间线程,我不希望任何人调用一个可能调用new的函数,以便从该线程调用。但是,由于这2个函数是公共(public)的,我无法通过语言强制执行。我的想法是测试线程id。假设我可以确保初始化线程ID的调用在正确的线程中,我只需要在其他调用中调用thread::get_id()并与我保存的线程ID进行比较。问题是我也想在关键线程中测试这个ID,但我不能锁定那个线程。因此我的问题是:thread::get_id()是否没有锁定(最糟糕的执行时间是什么时候)? 最佳答案 标准不保证threa

c++ - 具有多态类型的 unique_ptr 未被删除

我有一个使用基类派生类型存储的unique_ptrvectorstd::unique_ptr>>decisionVariables;其中Variable是父类(superclass),派生类型是Route类。我的问题是,当包含decisionVariables的类被删除时,路由实例似乎没有被删除。路由来源于变量:#ifndef__VARIABLE__#define__VARIABLE__/***Interfacefordecisionvariables.*/#include#include#includeclassVariable{public:/***Returnsanindepen

解决:OpenCV: FFMPEG: tag 0x44495658/‘XVID‘ is not supported with codec id 12 and format ‘mp4 / MP4

解决:OpenCV:FFMPEG:tag0x44495658/‘XVID’isnotsupportedwithcodecid12andformat'mp4/MP4文章目录解决:OpenCV:FFMPEG:tag0x44495658/'XVID'isnotsupportedwithcodecid12andformat'mp4/MP4背景报错问题报错翻译代码如下fourcc报错原因解决方法今天的分享就到此结束了背景在使用之前的代码利用python的opencv包把图片合并为视频(mp4格式)的时候,报错:OpenCV:FFMPEG:tag0x44495658/‘XVID’isnotsupporte

c++ - 试图仅在 C++ 中模拟 Matlab "unique"函数

我有以下vector,v=[9295]及其唯一元素c=[259]按升序排列。我想提取vectoru=[3132]。uvector包含vectorc中唯一元素的索引,从而重构vectorv。我的想法是遍历v并借助基于c的唯一值构建的哈希表来获取索引值。这有意义吗?如果是的话,你能请一些人在c++中提出一种方法吗?高度赞赏其他建议(我对有效的实现感兴趣,因为v和c矩阵足够大)。最好的问候,托特 最佳答案 C++的索引是从0开始的,这样写比较正确u={2,0,2,1};您可以使用标准算法来完成任务。例如(这里我假设vectorc已经以某种

c++ - 如何使用 make_pair 创建一对 id 和 struct(对象)?

我试图像这样创建一对id和对象:#include#include#includestructnum{doublex;doubley;};intmain(){autotmp=std::make_pair(1,{1.0,2.0});}我收到错误error:nomatchingfunctionforcallto'make_pair(int,)'是否有正确的方法来创建一对id和object? 最佳答案 不,这是你应该如何创建你的对:autotmp=std::make_pair(1,num{1.0,2.0});或者(如@StoryTeller

c++ - 制作一个 const unique_ptr 然后尝试从它 std::move 给出相同的错误,就好像您试图访问复制构造函数一样

当我们尝试复制unique_ptr(例如,将一个唯一指针分配给另一个)时,我注意到错误是ErrorC2280std::unique_ptr#includeintmain(){std::unique_ptra=std::make_unique(2);std::unique_ptrb=a;}没关系,因为unique_ptr没有定义复制构造函数。您不会从唯一指针进行复制以在它们之间move(转移指针的所有权)。有趣的是(好吧,也许不是),这段代码抛出了同样的错误。现在我知道它是无效的(我将第一个unique_ptr声明为不可变对象(immutable对象)),但错误消息暗示它正在尝试调用复制

c++ - 引用 unique_ptr 的 vector

我有一组unique_ptr。在这里我想拿走其中的一些并将它们返回给调用者。调用者只需要读取内容,所以我想使用常量引用。但我不确定如何使用unique_ptr来做到这一点。这是我用来使用原始指针执行此操作的一些代码:classentry{};vectormaster;constvectorget_entries(){vectorentries;//peusocode,mastercontainsallentries.//onlysomeentriesarecopied,filteredbysomepredicatecopy_if(master.begin(),master.end(),

c++ - 你能初始化 unique_ptr 的 "static const vectors"吗? (C++17 与 GCC 7.3)

我正在尝试创建一个staticconst默认对象(规则)的列表太大而不能经常复制,因此我想将它们存储在vector中的unique_ptr.我注意到类似的问题已经进行了几次,但我不清楚这是否真的可行(我倾向于不可行)。即你不能使用initializer_list与unique_ptr因为对成员的访问是const导致复制操作。您不能通过引用传递临时变量,从而导致复制操作。因此两者:staticconststd::vector>kStrings={std::unique_ptr(newstd::string("String1")),std::unique_ptr(newstd::strin