草庐IT

复制集

全部标签

c++ - 方便地将 std::vector<unsigned char> 复制到输入流 (std::istream) 对象

我正在尝试使用第3方库中的函数,并需要一个输入流对象,其中传输二进制文件数据。签名看起来像这样:doSomething(conststd::string&...,conststd::string&...,std::istream&aData,conststd::string&...,conststd::map*...,long...,bool...);由于我无法更改/更改此第3方库/函数,因此我必须适应“我的”代码。在调用位置,我有一个std::vector,它包含预期在istream对象中传递的数据。目前,我通过迭代它并使用我强烈怀疑可能有更有效/更方便的方法,但到目前为止找不到任何

c++ - 将 char* 复制到 char*

这是我的部分代码:extern"C"REGISTRATION_APIintextreme(char*lKey){strings1;char*p=NULL;try{ifstreammyfile("extreme.txt");inti=0;if(myfile.is_open()){while(getline(myfile,s1)){switch(i){case1:strcpy(p,s1.c_str());lKey=p;break;//continuehere}}}}现在当我从外部应用程序调用这个函数时,我得到这个错误:AccessViolationException:Attemptedto

c++ - 为什么复制初始化是这样的?为什么需要复制构造函数?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:What’sthemotivationbehindhavingcopyanddirectinitializationbehavedifferently?通过复制初始化,我的意思是这样的:structMyStruct{MyStruct(int){}MyStruct(constMyStruct&){}};MyStructs=5;//needs*both*theintandcopyconstructor尽管使用C++编程多年,但我从未意识到上述代码需要复制构造函数(感谢jogojapan)。临时文件总是被省略,因此

c++ - 复制到数组时的 memcpy 与赋值;为什么这会生成不同的代码?

编译以下代码时,#includestructX{chara,b,c,d;};voidcopy_assignment(char*p,Xx){*p++=x.a;*p++=x.b;*p++=x.c;*p++=x.d;}voidcopy_memcpy(char*p,Xx){memcpy(p,&x,sizeof(X));}GCC和clang都为copy_assignment发出一系列movb指令,同时为copy_memcpy发出单个movl指令。假设X没有填充,而这里没有,那么两者不应该是等价的吗?单个movl不是更有效吗?准确地说,我正在编译:g++-O3-S-oprog.Sprog.cpp和

c++ - 为什么对象的初始化会调用复制构造函数?

考虑以下最小工作示例:#includeintmain(){::std::atomica=false;}atomic的Copyctor和copyassignment都被显式删除。但是,这应该调用ctortakingexactlyabool.g++和clang++都提示这一行试图调用atomic的复制构造函数:$g++-std=c++1za.cppa.cpp:Infunction‘intmain()’:a.cpp:4:27:error:useofdeletedfunction‘std::atomic::atomic(conststd::atomic&)’::std::atomica=fal

c++ - 在其他构造函数中调用复制构造函数

#include#include#include#includeclassA{public:std::strings;A(){s="string";new(this)A(*this);}};intmain(){Aa;std::cout我在输出中得到空字符串。C++标准对此类行为有何规定? 最佳答案 这里至少有两个问题:你尝试用它自己的拷贝初始化A在构造器内部,A还没有完全构造好,所以你不能真正复制它更不用说new(this)本身就是可疑的。 关于c++-在其他构造函数中调用复制构造函数,

c++ - 在复制初始化中,对复制构造函数的调用是显式的还是隐式的?

classAAA{public:explicitAAA(constAAA&){}AAA(int){}};intmain(){AAAa=1;return0;}在上面的代码中,据我了解,虽然在大多数情况下被省略,但在语义上仍然需要调用复制构造函数。我的问题是,调用是显式的还是隐式的?很长一段时间以来,我的脑海里都得出这样的结论:对AAA::AAA(int)的调用是隐式的,但对复制构造函数的调用不是。今天不小心弄到g++编译上面的代码,报错了。(VC12编译OK。)在标准的第8.5节中:Ifthedestinationtypeisa(possiblycv-qualified)classtyp

c++ - 复制构造函数被隐式删除,因为默认定义的格式不正确

我有一个A类(来self无法控制的库),它有一个私有(private)复制构造函数和一个clone方法,还有一个类B派生自A。我也想为B实现clone。天真的方法#includeclassA{//Ihavenocontrolherepublic:A(inta){};std::shared_ptrclone()const{returnstd::shared_ptr(newA(*this));}private:A(constA&a){};};classB:publicA{public:B(intdata,intextraData):A(data),extraData_(extraData)

讲解Redis的主从复制

Redis主从复制1主从复制2作用3主从复制架构图4搭建主从复制5使用规则1主从复制主从复制架构仅仅用来解决数据的冗余备份,从节点仅仅用来同步数据无法解决:1.master节点出现故障的自动故障转移主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower),数据的复制是单向的!只能由主节点复制到从节点(主节点以写为主、从节点以读为主)。默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能由一个主节点。2作用数据冗余:主从复制实现了数据的热备份,

c++ - 使用删除的复制构造函数初始化 const 引用成员

此代码在B中有一个constA&a成员,其中A有一个已删除的复制构造函数,在GCC中无法编译4.8.1,但它在clang3.4中工作正常:classA{public:A()=default;A(constA&)=delete;A&operator=(constA&)=delete;};classB{public:B(constA&a):a{a}{}private:constA&a;};intmain(){Aa{};Bb{a};}哪一个编译器是正确的?GCC中的错误是:prog.cpp:Inconstructor‘B::B(constA&)’:prog.cpp:11:14:error:u