草庐IT

复制集

全部标签

c++ - 理解和使用复制赋值构造函数

我想了解复制赋值构造函数在C++中的工作原理。我只用过java,所以我真的不在我的水域里。我已经阅读并看到返回引用是一个很好的做法,但我不知道我应该怎么做。我写了这个小程序来测试这个概念:主要.cpp:#include#include"test.h"usingnamespacestd;intmain(){Testt1,t2;t1.setAge(10);t1.setId('a');t2.setAge(20);t2.setId('b');cout测试.h:classTest{intage;charid;public:Test(){};Test(constTest&t);//copyTest

c++ - 复制一些大于 dst 的内容时,memcpy() 是否安全?

request_token.size()大于LEN是否安全?chardst[LEN];memcpy(dst,request_token.c_str(),request_token.size()); 最佳答案 不,这不安全;你会导致缓冲区溢出。原因是,除了您在第三个参数中传递的大小,memcpy无法知道您的目标缓冲区的大小。 关于c++-复制一些大于dst的内容时,memcpy()是否安全?,我们在StackOverflow上找到一个类似的问题: https:/

c++ - 如何使用 memcpy 将数据从两个整数复制到字符数组?

我有一个文件,最多可以存储8个字节的数据。我有一个系统(我们称之为Sys1),它可以从文件中取出8个字节并将其保存在ram内的缓冲区中。我可以使用这8个字节并在其中复制一些内容,然后使用该系统说“好的,我完成了,只需将这些数据发送回文件即可”。我想将8个字节放入缓冲区,向其中复制一个整数,这需要4个字节,然后在剩余的4个字节上复制另一个整数。我只想要两个8字节的整数,我相信这是可以做到的。我设法只复制了4个字节,也就是1个整数,并设法将其发送回文件。所以我有这样的东西:char*data;sys1.bring_the_8_bytes(&data);//nowthe8bytesarein

Elasticsearch中复制一个索引数据到新的索引中

问题我有时候,需要调试一个已经存在的ES索引,需要从已有的索引复制数据到新的索引中去。解决这里我借助一个GUI工具,来解决这个问题,底层它是使用Reindex的API实现索引数据复制的。利用ReindexAPI搞不定这个事情,原索引mapping结构不会被复制。#步骤选中已存在的redix菜单,准备开始负责索引数据,如下图:输入将要新建的索引名,开始索引复制,如下图:开始索引数据复制,如下图:等待一段时间,就可以完成索引复制了。#检查利用count的api检查一下文档的数量,看看是否都复制完了。如下图:通过检查新旧两个索引的文档总数,可以知道我们复制基本成功了。总结有个Elasticsearc

c++ - 使用 memcpy 复制数组的一部分,以及其他内存操作工具

是否可以使用memcpy复制数组的一部分?例如,我们有一个包含10个整数的数组。我们可以创建一个新数组,并将最后5个整数复制到其中吗?是否有其他可用于c/c++的内存/数组复制/操作工具? 最佳答案 Isitpossibletousememcpytocopypartofanarray?不,一般情况下是不可能的。只有当数组中元素的类型是普通布局时,您才能这样做。Sayforexamplewehaveanarrayof10integers.Canwecreateanewarray,andcopythelast5integersintoi

c++ - 为什么 C++ 复制构造函数在调用其子复制构造函数时表现不同?

我有以下玩具类A及其子类B:#includeusingnamespacestd;classA{protected:inta;public:A():a(1){cout我发现如果我不为B类提供拷贝构造函数,编译器会为我合成一个,而那个使用我为A类提供的拷贝构造函数。但是,如果我为类A提供拷贝构造函数B类,我没有显式调用基类A的复制构造函数(见代码),编译器会调用类A的默认构造函数吗?这是为什么? 最佳答案 这是标准行为。这主要是为了保持一致性:任何未显式调用特定基类构造函数的用户定义构造函数将调用默认构造函数。为什么复制构造函数会有所不

c++ - 使用 std::copy 复制所有元素的地址

我正在尝试获取给定集合的所有元素的地址并将它们复制到std::set。基本上,而不是std::sets1;std::copy(first1,last1,std::inserter(s1,s1.begin()));我想插入他们的地址。像这样的东西:std::set>s1;std::copy(reference_iterator(first1),reference_iterator(last1),std::inserter(s1,s1.begin()));在这里,reference_iterator将是一个迭代器,返回其元素的地址,而不是元素,这与boostindirect_iterato

c++ - C++标准中哪里声明删除复制构造函数时不生成默认构造函数?

C++11程序structFoo{Foo(Fooconst&)=delete;};intmain(){Foofoo;}产生错误$g++-std=c++11junk.cpp-ojunkjunk.cpp:Infunction'intmain()':junk.cpp:6:9:error:nomatchingfunctionforcallto'Foo::Foo()'junk.cpp:6:9:note:candidateis:junk.cpp:2:5:note:Foo::Foo(constFoo&)junk.cpp:2:5:note:candidateexpects1argument,0prov

c++ - 无需在 C++ 中复制即可使变量不可更改

我正在编写一些代码,其中有一个std::vector类型的变量在指定值之前声明。我不能在声明的同时定义值,因为它需要很多行代码来设置值。问题是这个变量本质上是一个常量,这意味着它一旦设置就不应该被修改。但是,它不能声明const.一种方法是创建另一个变量const并将值复制到其中。conststd::vectora(b);会做,并使用a而不是b在程序中。但是,我的变量可能很大,我希望学习一种无需执行复制的方法。你们有什么建议吗? 最佳答案 您可以创建一个函数来初始化它。在最坏的情况下,您有一个移动。充其量你有(N)RVO(返回值优化

c++ - 将 constexpr 数组复制到类中

假设我有一个类:classMyClass{chararray[12];public:MyClass(constchar*arr){for(intx=0;x是否可以使MyClass构造函数constexpr。棘手的部分是初始化新数组.... 最佳答案 我想(我希望)以下示例可以提供帮助。我将您的MyClass转换为模板类,其中模板参数是数组的维度(12);我希望这不是问题。应该适用于C++11和C++14#includetemplatestructrange{};templatestructrangeH{usingtype=typen