草庐IT

copy-constructor

全部标签

c++ - std::copy 的限制是否比 std::memcpy 更宽松?

与regardtothe问题copyvs.memcpyvsmemmove(这里的信息非常好,顺便说一句。),我一直在阅读,在我看来,这不像口语中所说的,例如cppreference注意:memcpy已更改为memmove,因为采用了此引用。--NotesInpractice,implementationsofstd::copyavoidmultipleassignmentsandusebulkcopyfunctionssuchasstd::memcpyifthevaluetypeisTriviallyCopyable--std::copy(也不是std::copy_backward)不

c++ - 我应该从 Boost::filesystem::copy 得到什么错误代码

我正在尝试使用带有system::error_code参数的boost::filesystem::copy_file将文件复制到目标位置,因为我不想抛出异常。如果同名文件已经存在,该函数接受一个参数是否应该失败,这是我想要的行为。来自http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html#copy_file:Effects:Ifoption==copy_option::fail_if_exists&&exists(to),anerrorisreported.但是,我找不到我应该期待的错误代码。

c++ - CUDA 推力 : copy from device to device

我使用标准CUDAmalloc在CUDA中分配了一个内存数组,并将其传递给函数,如下所示:voidMyClass::run(uchar4*input_data)我还有一个类成员,它是一个推力device_ptr声明为:thrust::device_ptrdata=thrust::device_malloc这里的num_pts是数组中值的个数,input_data指针保证是num_pts长。现在,我想将输入数组复制到thrust_device_ptr中。我看过推力文档,其中很多都在谈论从设备复制到主机内存,反之亦然。我想知道在推力上执行此设备到设备复制的最佳性能最佳方式是什么,还是我应该

c++ - CMake : softlink resource ( such as GLSL shaders ) or copy each complilation

使用CMake将资源从源目录复制到构建目录的最简单方法是file(COPY${CMAKE_CURRENT_SOURCE_DIR}/resourcesDESTINATION${CMAKE_CURRENT_BINARY_DIR})但是,这仅当我调用cmake时才会更新构建目录中的资源。我需要每次调用make来更新资源。例如现在我开发了一些GLSL着色器。我需要同时更改C++代码和GLSL代码,并且我需要在我的IDE中每次点击compile或run时一切都同步(我将CodeBlocks与CMake生成的项目文件一起使用)简单的解决方案是使从源目录到构建目录的软链接(softlink)。但我不

c++ - 让 shared_ptr 成员破坏 CopyConstructible 契约吗?

我刚刚在codereview争论过其中声明具有std::shared_ptr成员的类会破坏CopyConstructible契约(Contract),特别是:ThefollowingexpressionsmustbevalidandhavetheirspecifiedeffectsTu=v;Thevalueofvisunchanged原因是复制会通过增加shared_ptr的引用计数来更改源对象,但我的反对意见是引用计数与shared_ptr。更改引用计数是一种副作用,但引用并未说明禁止在被复制的对象之外产生副作用。但我不是语言律师,所以我可能是错的。根据C++标准,什么是正确的?

c++ - 为第二个范围内的重复项设置差异,替代 remove_copy

我有两个数组或vector,比如说:intfirst[]={0,0,1,1,2,2,3,3,3};intsecond[]={1,3};我想去掉第一组中的1s和3s,set_difference只能去掉这些值的第一次出现,但这不是我想要的。我是否应该通过迭代第二个范围并每次从第一个集合中删除一个条目来使用remove_copy来执行此操作。在C++中执行此操作的最佳方法是什么? 最佳答案 写一个专门的set_difference:templateOutputIteratorset_difference_any(InputIterato

c++ - 严格的别名规则和 std::copy

我有一个字符数组,其中包含我需要解释为“int”的“序列化”数据。以前我只是将指向位置的指针转换到“int*”并取消引用以获取int数据,但尽管它对我来说效果很好,但它打破了严格的别名规则,因此出现了未定义的行为。所以现在我使用memcpy将字节复制到一个int中,我相信这不是未定义的行为。但是我可以使用“std::copy”吗?例如chardata[10]={0,1,2,3,4,5,6,7,8,9};inti;std::copy(data,data+sizeof(int),reinterpret_cast(&i));这本身并没有违反严格的别名规则,但任何可能的实现都会这样做.....

c++ - 警告 : base class ‘A’ should be explicitly initialized in the copy constructor

我有以下类结构:classA{A(){}A(constA&src){}};classB:virtualA{B():A(){}B(constB&src):A(src){}};classC:virtualA{C():A(){}C(constC&src):A(src){}};classD:virtualB,virtualC{D():B(),C(){}D(constD&src):B(src),C(src){}};这给了我警告:Incopyconstructor‘D’:warning:baseclass‘A’shouldbeexplicitlyinitializedinthecopyconstr

c++ - 将基于自定义模板的迭代器类的对象转换为 const_iterator

我正在大学学习OOP类(class)(C++是基础语言)。我的任务是实现自己的链表模板容器类。我几乎完全做到了,但遇到了问题。已知STL提供iterator和const_iterator通过列表进行迭代的类。它们具有几乎相同的实现,主要区别在于iterator的方法返回引用,而const_iterator的方法——常量引用。我关注了https://stackoverflow.com/a/3582733/2108548并创建了单独的模板类ListIterator.然后我用typedef声明类(class)Iterator和ConstIterator类内List.我有这样的东西:templ

c++ - 复制/移动构造函数的奇怪行为以及如何返回大对象?

我最近再次尝试使用C++11,在离开一段时间后,在阅读互联网上的许多文章后,我现在完全困惑什么是从工厂函数返回大对象的最有效方法(基本上,数据从数据库分析)。我已经成为unique_ptr的粉丝,但我在几篇文章中读到,由于有了新的移动构造函数,现在完全可以按值返回一个大vector,并且由于这些新的语义,它应该像复制一个指针一样快。为了尝试这个,我写了一个小测试程序,在各种构造函数中输出:#include#includeusingnamespacestd;classC{public:C(stringn):_name{n}{cout测试CfooVal(){coutfooUPtr(){co