草庐IT

Q_DISABLE_COPY

全部标签

C++ FileIO Copy -VS- System("cp file1.x file2.x)

编写文件复制例程会更快/更高效,还是我应该只执行对cp的系统调用?(文件系统可能不同[nfs、local、reiser等],但它总是在CentOSlinux系统上) 最佳答案 Invoking一个shell通过使用system()函数效率不高,也不是很安全。在Linux中复制文件最有效的方法是使用sendfile()系统调用。在Windows上,CopyFile()应使用API函数或其相关变体之一。Example使用sendfile:#include#include#include#include#include#include#i

c++ - 类 : handling copy constructor and destructor (C++) 内的 vector

以“big3”(构造函数、复制构造函数、析构函数)的简单类:#includeusingnamespacestd;//actuallygoesintheCfilethatlinkstothisheaderfile...classplanets(){//storesmassandradiidataforplanetsinasolarsystem.public:vectormass;vectorradius;//constructorplanets(intnumObj){for(inti=0;imass(p.mass);//copyvectorsintonewclass.vectorradi

c++ - 如何从 C-Header 导入 "disable"宏

A类使用一个用C编写的库。该库提供了一些在A中使用的数据类型和常量。不幸的是,该库还在其头文件中定义了宏,这些宏与我在main.cpp或其他使用A的类中的C++代码发生冲突。当A.h包含在某处时,如何防止c_library.h的宏被执行?我也愿意接受架构更改,但我不想接触C库。当然,还有#undef指令。但这意味着每个宏或每次碰撞都需要大量手动工作。(好吧,没有太多-但是,嘿,这一定可能更优雅?)代码://main.cpp#include"A.h"...Aa(...)...std::max(x,y);//oops,problemsincemaxisdefinedasmacroinc_l

c++ - N*(connect + send + close) vs (Nagle disable + connect + N*send + close),N > 1

我是套接字编程的新手(正如您已经从我的愚蠢问题中弄清楚的那样),但不要让我感到羞耻,我正在使用TCPposix编写程序。我的约束如下:从客户端发送到服务器的消息应该被读取为字节流,虽然我的应用程序性能不高,但消息应该尽快传递。我编写了一个TCP客户端类,目的是执行以下操作:1次连接-多次发送-1次在流式传输结束时关闭。问题是消息没有近乎实时地传递(我假设它等待有一个更大的包裹更好吞吐量)在网上做了一些研究后,我发现虽然你可以禁用Nagle算法(NA),但这样做是一个非常糟糕的主意。由于我是套接字编程的新手,我不想禁用我不完全理解的功能。所以我有两个(不好的?)选择:连接-发送-关闭每条

c++ - C++ 中 std::is_trivially_copy_constructible 中的琐碎操作是什么

这是std::is_copy_constructible(1)和std::is_trivially_copy_constructible文档的摘录(2)关于cppreference.com:1)CheckswhetheratypeisCopyConstructible,i.e.hasanaccessibleexplicitorimplicitcopyconstructor.Iftherequirementismet,amemberconstantvalueequaltrueisprovided,otherwisevalueisfalse.2)Sameas(1),butthecopyco

c++ - GNU STL 字符串 : is copy-on-write involved here?

(免责声明:我不知道C++标准对此会说什么……我知道,我很糟糕)在处理非常大的字符串时,我注意到std::string正在使用写时复制。我设法编写了最小的循环来重现观察到的行为,例如,下面的循环运行得非常快:#includeusingstd::string;intmain(void){stringbasestr(1024*1024*10,'A');for(inti=0;i在循环体a_copy[1]='B';中添加写入时,显然发生了实际复制,并且程序在0.3秒内运行,而不是几毫秒。100次写入使其速度减慢了大约100倍。但后来变得很奇怪。我的一些字符串没有写入,只是读取,这没有反射(re

c++ - 在 QObject 派生类中重复 Q_DISABLE_COPY

在Qt中有一个宏允许为类声明私有(private)复制构造和赋值运算符:http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#Q_DISABLE_COPY据说这个宏应该用于所有QObject(尤其是QWidget)的派生类。我了解它的工作原理以及它为何有用。我不明白的是:有什么理由在我的QObject派生类中重复Q_DISABLE_COPY而QObject已经包含Q_DISABLE_COPY并且通过这有效地防止我的派生类被复制? 最佳答案 尝试复制派生类时可能打印的错误消息可能是指

C++20 constexpr std::copy 运行时优化

cppreference.com说:Inpractice,implementationsofstd::copyavoidmultipleassignmentsandusebulkcopyfunctionssuchasstd::memmoveifthevaluetypeisTriviallyCopyable但是,该页面还指出,从C++20开始,不采用执行策略的重载将是constexpr。标准会禁止这些运行时优化(因为std::memmove不是constexpr)还是有办法为运行时优化constexpr函数? 最佳答案 我们也可以吃蛋

C++ : Implementing copy constructor and copy assignment operator

在阅读了C++中的复制构造函数和复制赋值运算符之后,我尝试创建一个简单的示例。虽然下面的代码片段显然有效,但我不确定我是否以正确的方式实现了复制构造函数和复制赋值运算符。您能否指出是否有任何错误/改进或更好的示例来理解相关概念。classFoobase{intbInt;public:Foobase(){}Foobase(intb){bInt=b;}intGetValue(){returnbInt;}intSetValue(constint&val){bInt=val;}};classFoobar{intvar;Foobase*base;public:Foobar(){}Foobar(i

c++ - 如何使用 std::copy 将一张 map 复制到另一张 map 中?

我想将一个std::map的内容复制到另一个。我可以使用std::copy为了那个原因?显然,下面的代码是行不通的:intmain(){typedefstd::mapMap;Mapm1;m1[3]=0.3;m1[5]=0.5;Mapm2;m2[1]=0.1;std::copy(m1.begin(),m1.end(),m2.begin());return0;}这行不通,因为copy将调用operator*在m2.begin()“取消引用”它并分配一个值(所有值的类型都是std::pair)。然后它会调用operator++移动到m2中的下一个空格.由于const,这两个操作都不起作用在c