草庐IT

copy-assignment

全部标签

c++ - STL的copy函数的效率

我正在尝试从条目列表构建一组唯一的单词,每个条目都有一个字符串vector。所以我创建了一个名为Insert的函数,它会像这样为每个条目调用:for(auto&e:_Entries)_Dictionary.Insert(begin(e.getNameWords()),end(e.getNameWords()));_Dictionary类内部有一个集合(STL容器),我写了Insert函数如下:templatevoidInsert(InputIteratorfirst,InputIteratorlast){for(autoit=first;it!=last;++it)_AllWords.

c++ - std::string::assign() 导致段错误

我有一个std::vector包含特定偏移量的字符串。这是一个缩短的转储:...@1280000000000000000736F6D6574686933........somethin@14438360000000000000000000000000000ng..............@1600000000000000000312E322E33000000........1.2.3...@17600000000000000000000000000000000...................我正在尝试提取偏移量136处的数据并将其放入std::string中:std::strin

c++ - OpenCV 子矩阵访问 : copy or reference?

如果我使用以下方法从矩阵中提取子矩阵cv::MatA=cv::Mat::ones(4,4);cv::MatB=A(cv::Rect(1,1,2,2));“B”是“A”中这些值的拷贝还是引用了这些值?能否举例说明如何获取(1)子矩阵的拷贝?(2)对子矩阵的引用? 最佳答案 B是A的Mat-header的拷贝,但引用相同的像素。因此,如果您操纵B的像素,A也会受到影响。(1)(“深拷贝”)将是:cv::Rectr(1,1,2,2);cv::MatA=cv::Mat::ones(4,4);cv::MatB=A(r).clone();//n

c++ - 他们是否将 copy_if 添加到 c++0x?

很烦人的是copy_if不在C++中。有谁知道它是否会在C++0x中? 最佳答案 由于C++0x还没有定型,只能看看最近的draft. 关于c++-他们是否将copy_if添加到c++0x?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/794320/

c++ - 错误 [Pe513] : a value of type "void *" cannot be assigned to an entity of type "uint8_t *"

我正在尝试将C项目转换为C++。在C项目中,我在编译成C++时遇到了这个错误:Error[Pe513]:avalueoftype"void*"cannotbeassignedtoanentityoftype"uint8_t*"下面的代码给出了这个错误:#defineRAM32Boundary0x20007D00uint8_t*pNextRam;pNextRam=(void*)RAM32Boundary;//loadupthebaseram谁能解释一下这是在C中做什么以及如何将其转换为C++? 最佳答案 C允许与void*之间的隐式转

c++ - 匈牙利算法 : I'm having trouble with assigning as many jobs to workers as possible

我已经在C++中创建了匈牙利算法的实现。这种实现在很多情况下都非常有效。但是,在某些情况下,我的算法根本不起作用,因为我相信(并且确实如此)我对算法的一个步骤的实现是错误的。我的实现将数组X作为输入,运行算法的步骤并产生最终分配。该算法的步骤可以在维基上找到:HungarianAlgorithm在步骤3中,它具有以下成本数组(worker由行表示,作业由列表示)然后它说Initiallyassignasmanytasksaspossiblethendothefollowing但是我不明白什么是正确的实现。如何分配尽可能多的任务?选择会是随机的吗?然后如果选择是随机的,我可以选择第一个w

c++ - 在派生类中使用基类 Copy CTOR

我知道有很多关于这个主题的帖子,但我找不到任何帖子来完全回答我的问题。假设我有一个基类和一个派生类,我为它实现了一个CCtor和一个赋值运算符,如下所示:classBase{char*name;....Base(constBase&other):name(nullptr){*this=other}voidoperator=(constBase&other){...Deepcopyofname}}classDerived:publicBase{....Derived(constDerived&other){*this=other;}voidoperator=(constDerived&o

c++ - 在调用 vector::assign() 之前调用 vector::reserve() 会更好吗?

我知道使用“reserve”以避免不必要的重新分配是一种很好的做法(EffectiveSTL的第14项):std::vectorv1;v1.reserve(1000);for(inti=0;i当您调用assign时是否适用相同的规则?std::vectorv2;//v2.reserve(v1.size());//Bettertodothis?v2.assign(v1.begin(),v1.end()); 最佳答案 如果v1是std::vector你真的不需要它,因为编译器/STL知道在v2(并且将在复制实际数据之前保留本身所需的数量

c++ - 关于 Copy-On-Write 和 shared_ptr 的困惑

我已经在网上搜索并通读了有关shared_ptr的Boost文档。SO上有一个响应,说写时复制(COW)的shared_ptr很糟糕,TR!已将其从字符串库中删除。大多数关于SO的建议都说使用shared_ptr而不是常规指针。该文档还讨论了使用std::unique()来制作COW指针,但我还没有找到任何示例。谈论的是拥有一个为您执行COW的智能指针,还是让您的对象对克隆对象使用新的shared_ptr然后修改克隆对象?示例:食谱和配料structNutrients;structIngredient{Ingredient(conststd::string&new_title=std:

C++为什么vector初始化会调用copy constructor

当你用下面的方式初始化一个vector时:std::vectorMyVec(10);它调用默认构造函数一次,然后再调用复制构造函数10次。所以,如果我没理解错的话,vector中的对象都是拷贝构造函数生成的。有人可以解释调用复制构造函数而不是默认构造函数的原因吗?或者甚至只是在没有对象的情况下分配内存? 最佳答案 它将分配没有对象的内存,除非您指定初始大小为10,因此它必须创建10个对象。如果你想要存储10个对象而不实际创建它们,你可以这样做:std::vectorMyVec;MyVec.reserve(10);如果你看一下你正在使