草庐IT

copy_constructor

全部标签

c++ - 如何使用 std::copy 直接从文件流读取到容器?

我遇到了一个很酷的STL示例,它使用istream_iterators将标准输入(cin)复制到vector。vectorcol1;copy(istream_iterator(cin),istream_iterator(),back_inserter(col));我将如何执行类似于从文件流直接读取到容器中的操作?假设它是一个包含以下内容的简单文件:“敏捷的棕色狐狸跳过了懒惰的狗。”我希望每个单词在复制行之后成为vector中的一个单独元素。 最佳答案 打开文件成功后将cin替换为文件流对象:ifstreamfile("file.tx

c++ - 就地 std::copy_if

在我看来,std::copy_if对于过滤容器非常有用:std::vectorvec{1,2,3,4};autoitEnd=std::copy_if(vec.begin(),vec.end(),vec.begin(),[](inti){returni>2;});vec.resize(itEnd-vec.begin());但是,std::copy_if指定输入和输出范围不能重叠。还有其他选择吗? 最佳答案 copy_if主要用于将范围复制到另一个范围/容器,即按照设计,该算法的本质是将满足某些条件的元素复制到另一个(非重叠)范围或新容

c++ - 哪个更好 : a lying copy constructor or a non-standard one?

我有一个包含不可复制句柄的C++类。但是,该类必须有一个复制构造函数。因此,我实现了一个将句柄的所有权转移到新对象的方法(如下所示),classFoo{public:Foo():h_(INVALID_HANDLE_VALUE){};//transferthehandletothenewinstanceFoo(constFoo&other):h_(other.Detach()){};~Foo(){if(INVALID_HANDLE_VALUE!=h_)CloseHandle(h_);};//otherinterestingfunctions...private:///disallowas

c++ - Qt 拖放 : cannot move when copy is enabled (Ubuntu Gnome)

我正在实现一个View和一个模型,我希望在其中支持内部移动项目(通过拖动)和复制项目(通过在拖动时按Ctrl)。我已经按照说明完成了我需要做的一切。我已经设置了mime函数,我已经实现了removeRows()和flags()。问题是当我拖动时,它默认为复制操作(我得到带有加号的箭头光标,它确实通过在模型中创建一个新项目来复制项目)。我能看到的唯一区别是:如果我在supportedDropActions()中只返回Qt::MoveAction,它只会移动。如果我返回(Qt::CopyAction|Qt::MoveAction),它只会复制。有什么想法吗?我希望它像Nautilus(Gn

c++ - 错误 : expected constructor, 析构函数,或 ‘<’ token 之前的类型转换

我是C++的新手,但已经获得了一些Java经验。在接下来的简短C++练习中,我尝试使用类模板构建堆栈。不幸的是,它无法编译,我也不知道为什么。错误信息是:Stack.cpp:6:error:expectedconstructor,destructor,ortypeconversionbefore‘tokenStack.cpp:14:error:expectedinitializerbefore‘tokenStack.cpp:25:error:expectedinitializerbefore‘tokenmake[2]:*[build/Debug/GNU-Linux-x86/Stack.

c++ - lcov 问题 : weird duplicate constructor marked as not covered & function not marked as covered, 即使其行已被执行

在我通过启动并运行一个100%覆盖率的小型C++测试项目来了解更多关于自动化测试的过程中,我遇到了以下问题——尽管我所有的实际代码行和所有执行分支都是被测试覆盖,lcov仍然报告两行未经测试(它们只包含函数定义),以及一个据称未经测试的“重复”构造函数方法,即使它匹配我的“真实”构造函数(唯一定义和使用过的构造函数)完美。(跳到编辑最小复制案例)如果我使用gcovrpython脚本生成相同的覆盖率统计数据(来自相同的确切来源,.gcno和.gcda文件)并将结果传递给JenkinsCobertura插件,它会在所有计数上为我提供100%-行,条件和方法。我的意思是:JenkinsCob

C++ copy_if lambda 捕获 std::string

这是来自此处的后续问题:C++-Developingownversionofstd::count_if?我有以下功能://vectorforstoringthefilenamesthatcontainssoundstd::vectorFilesContainingSound;voidContainsSound(conststd::unique_ptr&s){//OpentheWavfileWavwaveFile=Wav("Samples/"+s->filename_);//Copythesignalthatcontainsthesufficientenergystd::copy_if(

c++ - 为什么我需要另一个迭代器作为 std::copy() 中的参数?

我不明白为什么我需要将另一个迭代器作为调用std::copy()以读取文件的第二个参数。迭代器如何结束文件?vectorv;istream_iteratoris(file),end;copy(is,end,back_inserter(v)); 最佳答案 Howisiterator'end'endingofafile?按照惯例和/或标准库中的设计决定。迭代器end是默认构造的,在cppreference上,我们了解默认的std:istream_iterator构造函数:constexpristream_iterator();Const

c++ - 为什么 basic_string::append (iter, iter) 不调用 std::copy?

我刚刚发现在VisualStudioC++2010中,basic_string::append(iter,iter)显然不是通过使用std::copy.第一个问题:现在假设我实现了自己的迭代器类型,并为我的迭代器类型优化了std::copy重载,以便提供更高效的block式复制。除了重载append之外,还有什么方法可以让basic_string::append使用此优化?basic_string::append(iter,iter)是否有可能不进行字符复制?第二个问题(作为我自己实现的起点):以下是否保证有效?std::stringt("JohnB");std::strings;s.

ios - 可变类型 'NSMutableDictionary' 的属性具有 'copy' 属性;将存储一个不可变对象(immutable对象)

我正在使用Xcode9并尝试分析该项目。然后我遇到了以下问题Propertyofmutabletype'NSMutableDictionary'has'copy'attribute;animmutableobjectwillbestoredinstead请通过图片显示分析问题如何解决这个问题? 最佳答案 在Objective-C中,有一个复制方法定义在NSCopying中,另一个是mutableCopy,定义在NSMutableCopying中。NSDictionary(NSMutableDictionary的父类(supercla