草庐IT

复制集

全部标签

c++ - 传递给 std::for_each 的函数是否允许复制序列元素?

我最近偶然发现了cppreference中的这个措辞:Unliketherestofthealgorithms,for_eachisnotallowedtomakecopiesoftheelementsinthesequenceeveniftheyaretriviallycopyable.这个说法对吗?我没有在标准中找到任何依据。我是否理解得很好,它会顺便说一句。暗示来自同一页面的以下示例无效?structSum{Sum():sum{0}{}voidoperator()(intn){sum+=n;}intsum;};intmain(){std::vectornums{3,4,2,8,1

c++ - 永远不会调用具有默认参数的复制构造函数

为什么下面程序的输出只是int3而不是int3&4?#includeclassB{public:explicitB(inti){std::cout命令:clang++test.cpp-O0编译器:Appleclang3.0版(tags/Apple/clang-211.12)(基于LLVM3.0svn) 最佳答案 看起来您可能发现了一个编译器怪癖:)如果您将编译器版本更改为LLVM3.0以外的任何版本,则输出为int3&4。这在LLVm3.0上打印了int3&4,所以它似乎与B(3)是一个临时对象这一事实有关:classB{publi

c++ - Visual Studio Post Build 复制命令错误 MSB3073 退出代码 1

所以我有一个C++Player项目,它有2个其他项目依赖项,这两个项目都有后期构建事件来将dll复制到另一个文件夹。该项目正在build中,然后决定不随机工作,此后我一直没有找到解决方案。即使从SVN进行了干净的检查,它仍然不起作用,它适用于除我之外的所有其他开发人员。我已经检查了错误消息中的路径,它们确实存在,目标dll也是如此。每个依赖项目中的构建后事件:copy$(TargetPath)$(ProjectDir)..\..\$(Configuration)\plugins\$(ProjectName).dll产生的错误:errorMSB3073:Thecommand"copyC:

c++ - 左值何时在 C++ 中 move 而不是复制?

鉴于以下情况:FoogetFoo(){Fooresult=doSomeWork();returnresult;}C++是否保证result会被move,而不是被复制?或者换句话说,编写returnstd::move(result)是多余的吗?在没有显式std::move强制转换的情况下,是否有任何(其他)标准规定将静默move而不是复制左值的情况?注意事项:假设Foo是可move构造的。忽略复制/move省略,这可能另外适用。 最佳答案 尽管move可能会被省略,但是是的。如果move构造函数可用,则永远不会发生复制。为了清楚起见,

c++ - 当参数作为右值传递时完美转发避免复制?

我正在阅读Scott的书effectivemodernc++。在项目26中,有一个我在Wandbox上写的例子:https://wandbox.org/permlink/6DKoDqg4jAjA9ZTB我想验证好代码比坏代码好多少。然而,性能比较并不是我所期望的,即使是好的也比坏的慢。我不知道出了什么问题。为了防止wandbox的代码消失,这里是代码:#include#include#include#include#includeusingnamespacestd;std::multisetnames;voidbad_logAndAdd(conststd::string&name){a

c++ - 在 win32 C++ 中,如何启用静态文本控件来复制文本?

我正在编写一个简单的win32应用程序,它有一个窗口和静态文本,现在我想让用户通过右键单击复制文本(标记和复制)我该怎么做?LANGUAGELANG_NEUTRAL,SUBLANG_NEUTRALIDD_DIALOG1DIALOG0,0,369,318STYLEDS_3DLOOK|DS_CENTER|DS_MODALFRAME|DS_SHELLFONT|WS_CAPTION|WS_VISIBLE|WS_POPUP|WS_SYSMENUCAPTION"Win32demo"FONT8,"MsShellDlg"{LTEXT"Questionstodddd@gmail.com",IDC_STA

c++ - 隐式声明的 move 操作不会回退到复制?

我读过N3291“12.8.(11/15/28)Copyingandmovingclassobjectsclass.copy]”是否更正了隐式声明的move构造函数对所有非静态数据成员进行元素级move(可能通过分别定义的T(T&&)如果无法move任何非静态数据成员,隐式move构造函数将被标记为已删除并且不会尝试复制作为“后备”?(是的,move是为内置类型定义的,但实际上是一个拷贝)。同样move赋值,使用元素各自的Toperator=(T&&)。例子:structCopyOnly{CopyOnly();CopyOnly(constCopyOnly&);};//declaring

c++ - 将 vector<int*> 视为 vector<const int*> 而无需复制 (C++0x)

一个类包含一个std::vector.外部代码需要对该vector进行只读访问,不应修改其内容(无论是指针还是它们的内容)。在类内部,值可能发生变化(例如double_values(),因此将它们存储为std::vector是不可能的。有没有办法返回std::vector作为std::vector没有复制?感觉应该有,因为const只是在编译期操作,说什么可以修改,什么不可以修改。代码:(用g++-std=c++0x编译)classReadOnlyAccess{public:ReadOnlyAccess(conststd::vector&int_ptrs_param):int_ptrs

c++ - 避免在复制构造函数和 operator= 中重复相同的代码

在C++中,当类包含动态分配的数据时,显式定义复制构造函数、operator=和析构函数通常是合理的。但是这些特殊方法的事件是重叠的。更具体地说,operator=通常首先进行一些破坏,然后进行类似于复制构造函数中的处理。我的问题是如何在不重复相同的代码行并且不需要处理器做不必要的工作(比如不必要的复制)的情况下以最好的方式编写它。我通常有两种帮助方法。一种用于build,一种用于破坏。第一个是从复制构造函数和operator=中调用的。第二个由析构函数和operator=使用。示例代码如下:templateclassMyClass{private://Datamembersintco

复制使用CSS样式的IMG到画布中以获取最终DataUrl

假设我有cat.png在800x600像素。然后,我将其放入IMG中,并像以下内容一样应用CSS对象拟合:#cat{width:100px;height:100px;object-fit:cover;}现在,我在屏幕上有100x100图像。如何将最终结果传输到画布中,以便我可以获取数据图并保存为cat_thumb.png在100x100像素?这些代码只是忽略了应用于IMG的CSS:varc=document.getElementById("myCanvas");varctx=c.getContext("2d");varimg=document.getElementById("cat");ctx