草庐IT

c++ - 为什么在 std::copy 期间使用 std::back_inserter 而不是 end()?

我见过std::copy()使用std::back_inserter但我使用了std::end()并且两者都有效.我的问题是,如果std::end()工作正常,为什么还需要std::back_inserter?#include#include#include#includeusingnamespacestd;intmain(){//Declaringfirstcontainervectorv1={1,2,3};//Declaringsecondcontainerfor//copyingvaluesvectorv2={4,5,6};//Usingstd::back_inserterins

c++ - 为什么 std::copy 或 std::swap 不需要 <algorithm>?

根据这个cplusplus.com页,std::copy在header,原样std::swap然而这有效:#include//std::cout#include//std::vector#include//std::ostream_iterator()#include//rand(),srand()//NOTincludingintmain(){srand(time(NULL));constintSIZE=10;std::vectorvec;for(inti=0;i(std::cout,""));std::cout我唯一能想到的是它们是由导出的也...但是为什么我们需要标题吗?

c++ - 使用 std::copy 从 ifstream 读取十六进制值序列

考虑一个包含以十六进制表示法表示的整数序列的文件。我可以像这样流式传输它们:usingnamespacestd;ifstreaminfile(fname);unsignedinti;vectorvals;while(infile>>std::hex>>i){vals.push_back(i);}如果我想用istream_iterator做同样的事情怎么办?///borksonhex:copy(istream_iterator(infile),istream_iterator(),back_inserter(ref_data));有没有办法告诉istream_iterator如何采用十六

c++ - 我可以复制到 multimap 吗

给定一个istream_iterator和multimapoutput.我想将所有值复制到output中的'a'key。最好的处理方式是什么?我曾尝试使用:transform(istream_iterator(input),istream_iterator(),begin(output),[](constautovalue){returnmake_pair('a',value);})但是我得到了错误:error:assignmentofread-onlymemberstd::pair::first我认为这意味着我无法写入begin(output).我唯一的选择是使用for_each?

c++ - 使用 `std::copy()` 和 `std::back_inserter()`

我有两个A类和B类都有如下成员:classA{...std::vector>>grid;}classB{...std::vector>>grid;}我发现当我使用std::copy()从A::grid复制到B::grid时,它会失败。这是我所做的://HereisinB'sconstructor.//IinitializeB::gridwiththesamesizeofA::gridgrid=vector>>(GetSetting().grid_cols());for(inti=0;i>(GetSetting().grid_rows());for(intj=0;j但如果我删除初始化部分

c++ - std::copy_n 不改变目标 vector 大小

如果我为vector保留一些空间,然后使用std::copy_n()在其中复制一些值,我会正确复制并访问这些值,但是vector的大小仍然为零。这是预期的行为吗?我是否应该改为调整vector的大小,即使它效率不高?#include#include#includeintmain(){std::vectorsrc,dest;for(doublex=0.0;x测试的编译器:clang、gcc、VisualC++ 最佳答案 butthesizeofthevectorisstillzerostd::copy_n不会改变容器的大小,只是复制值

c++ - 复制初始化: why move or copy constructor was not called even if copy-elision is turned off?

我的问题不同,因为我可能“知道”复制省略。我正在学习复制初始化。但是,以下代码让我感到困惑,因为我已经使用-fno-elide-contructors-O0选项关闭了复制省略。#includeusingnamespacestd;classtest{public:test(inta_,intb_):a{a_},b{b_}{}test(consttest&other){cout我首先使用命令构建:g++-std=c++11-fno-elide-constructors-O0main.cpp-omain得到如下结果:**showelideconstructors**moveconstruct

c++ - 丢失的一元 std::copy 的最佳实现

C++11引入了语义以避免不必要的对象复制,std::move引入了语义,否则会发生复制。但是,现在也有一些情况需要拷贝,但默认情况下不需要。例如,考虑一下reverse的这种简单实现。因为基于范围的for使用完美转发,所以在循环内修改容器相当于损坏。autoout_iter=container.rbegin();for(autovalue:container){*out_iter++=value;}目标是使用解决这个问题for(autovalue:copy(container)){这看起来很简单……接受任何参数,获取底层类型并返回一个临时拷贝。 最佳答案

C++ 如何在不使用 winapi 的情况下 move 文件并将它们从一个磁盘复制到不同的磁盘?

必须是纯c++,我知道system("copyc:\\test.txtd:\\test.txt");但我认为这是系统功能,而不是c++解决方案,否则我会出错吗? 最佳答案 std::fstream怎么样?打开一个用于阅读,另一个用于写入,然后使用std::copy让标准库处理复制。像这样:voidcopy_file(conststd::string&from,conststd::string&to){std::ifstreamis(from,ios::in|ios::binary);std::ofstreamos(to,ios::o

C++删除一组列表中的重复项

我正在尝试删除thisquestion中返回列表中的重复项给定候选数字(C)和目标数字(T)的集合,找到C中候选数字总和为T的所有唯一组合。C中的每个数字只能在组合中使用一次。注意:所有数字(包括目标)都是正整数。组合(a1,a2,…,ak)中的元素必须按非降序排列。(即a1≤a2≤…≤ak)。解决方案集不得包含重复的组合。例如,给定候选集10,1,2,7,6,1,5和目标8,解决方案集是:[1,7][1,2,5][2,6][1,1,6]我的问题是如何有效地去除重复?以下是我的代码:publicclassSolution{publicstaticvoidmain(String[]arg