草庐IT

unique_ptrs

全部标签

Android 日历提供程序 : Is there a unique identifier for events, 可在多个设备上使用吗?

我正在使用Android日历提供程序来显示事件。我还通过使用事件的EVENT_ID作为引用将事件与本地应用程序数据库中的图像相关联。我现在想知道是否可以在多个设备上保持相同的引用?我知道对于account_type='com.google',GoogleCalendarSyncAdapter使用CalendarContract.EventsColumns.SYNC_DATA1来存储事件的googleID。然而,这似乎不是访问数据的可靠方式,因为SYNC_DATA列的使用可能随时更改,并且只能由SyncAdapter修改。有没有其他方法可以跨设备保留对日历提供程序事件的引用?

c++ - 在集合之间移动 `unique_ptr` s

我有两个集合和一个指向a元素的迭代器:set>a,b;set>::iteratoriter=findsomethingina;我想从a中删除iter指向的元素并将其插入到b中。可能吗?怎么办? 最佳答案 嗯,我怀疑没有正常的方法可以做到这一点。但总有一个不正常的:)您可以执行以下操作:autotmp=const_cast&&>(*iter);a.erase(iter);b.insert(std::move(tmp));好的,第一行违反了set不变性,这很可怕,但据我所知,这应该不是问题,因为在下一行我们从集合中删除了这个邪恶的节点。

c++ - std::unique 没有等价关系的例子(去掉连续的空格)

cppreference上有一个例子关于如何使用std::unique从字符串中删除连续空格:std::strings="wannagotospace?";autoend=std::unique(s.begin(),s.end(),[](charl,charr){returnstd::isspace(l)&&std::isspace(r)&&l==r;});//snowholds"wannagotospace?xxxxxxxx",where'x'isindeterminatestd::cout但是,在唯一性的要求部分中指出Elementsarecomparedusingthegiven

c++ - unique_ptr C++03仿真中的move函数

我正在尝试了解如何C++03emulationofunique_ptr实现。unique_ptr很像std::auto_ptr但更安全。在auto_ptr会隐式(即静默)转移所有权的情况下,它会吐出编译器错误。例如,一个简单的任务。函数move是模拟unique_ptr安全性背后的关键。问题:为什么有三个move函数?接受引用并将其转换为右值的第三个move函数实现(简化)如下。Tmove(T&t){returnT(detail_unique_ptr::rv(t));}在上面的代码中,到T的显式转换似乎没有必要。事实上,VisualStudio2010在没有显式转换为T的情况下非常满意

c++ - 附加调试器时 unique_ptr dtor 调用速度慢得离谱 (msvc)

structtest_struct{test_struct(){}~test_struct(){}};#include#include#includeintmain(){printf("ctorbegin\n");{std::vector>test_vec;constintcount=100000;for(autoi=0;i我正在使用VS2010,发现了一些荒谬的性能问题。上面的代码在调试和发布版本(ctrl+f5)中都运行良好,但是当附加调试器(f5)时,dtor调用unique_ptr类的速度慢得无法忍受。结果机器代码是相当优化的,所以我不认为这是编译器问题而不是调试器问题,但我不

C++11 非拥有引用/指向 unique_ptr 的指针?

这不是“如何做”的问题,而是“如何以正确的方式做”的问题我正在Qt中开发一个编辑器,其中不同的小部件显示子项及其(成员)变量。这些小部件中的每一个都应该保存一个指向已编辑子项的引用/指针,以显示和更改它们的成员变量。第一次尝试是我学习(并且仍然有点坚持)的旧ANSIC方法,使用指向所用对象的简单原始指针。它工作正常,但由于C++11标准支持智能指针并建议使用它们,我正在尝试使用它们。问题是,我不太确定在这种情况下使用它们的“最佳方式”是什么......看完SmartPointers:Orwhoownsyoubaby?和WhichkindofpointerdoIusewhen?和其他一些

c++ - 对持有 unique_ptr vector 的对象列表进行排序

根据C++11,以下代码是否会产生编译错误(如果是,为什么?)还是VC11的问题?#include#include#includestructA{std::vector>v;};intmain(){std::listl;l.sort([](constA&a1,constA&a2){returntrue;});}VisualC++2012产生以下编译错误:1>c:\programfiles(x86)\microsoftvisualstudio11.0\vc\include\xmemory0(606):errorC2248:'std::unique_ptr::unique_ptr':can

c++ - 使用静态常量初始化 unique_ptr 时出现 undefined reference 错误

当我尝试使用staticconst来初始化unique_ptr时,我收到“undefinedreference”错误。然而,当我新建一个使用相同常量的指针时,符号似乎被神奇地定义了。这是一个重现错误的简单程序:Outside_library.hclassOutside_library{public:staticconstintmy_const=100;};main.cpp#include"Outside_library.h"#include#includeclassMy_class{public:My_class(intnum){m_num=num;};virtual~My_class

c++ - 返回对齐内存是否需要 std::make_unique<T[]> ?

是唯一指针array_ptr拥有的内存:autoarray_ptr=std::make_unique(size);对齐到sizeof(double)alignof(double)边界(即,std是否要求正确对齐)?数组的第一个元素是缓存行的第一个元素吗?否则:在C++14中实现此目的的正确方法是什么?动机(更新):我计划在数组上使用SIMD指令,并且由于缓存行是我所知道的每个架构上的基本内存单元,所以我宁愿正确分配内存,以便array位于缓存行的开头。请注意,只要元素正确对齐(独立于缓存行之间元素的位置),SIMD指令就可以工作。但是,我不知道这是否有影响,但我猜是的,有影响。此外,我

c++ - 在消费者循环中重用 unique_lock

我在BjarneStroustrup的“C++编程语言,第4版”第119页中无意中发现了以下代码:queuemqueue;condition_variablemcond;mutexmmutex;voidconsumer(){while(true){unique_locklck{mmutex};mcond.wait(lck);autom=mqueue.front();mqueue.pop();lck.unlock();//processm}}还有一个生产者线程将Message插入队列,循环通知等待线程。我的问题是:是否需要在循环的每次迭代中创建一个新的unique_lock?这对我来说似