草庐IT

Copy_impl

全部标签

c++ - copy_n 还是直到eof?

我如何使用STL算法来做到这一点?std::ifstreamfile(filename);std::vectorbuf;for(autofile_it=std::istreambuf_iterator(file);file_it!=std::istreambuf_iterator()&&buf.size()备注buf.size().例如如果我执行以下操作并且文件小于2048字节,会发生什么情况?std::copy_n(std::istreambuf_iterator(file),2048,std::back_inserter(buf)); 最佳答案

c++ - 从 std::copy 和 std::copy_n 中提取输入迭代器

我试图实现一种反序列化方法,该方法采用输入迭代器并执行一系列block读取(使用std::copy和std::copy_n)。像这样(只是一个例子):templateInputItunserialize(InputItit){std::copy_n(it,sizeof(header_type),reinterpret_cast(&header));std::copy_n(it,header.payload_size,std::back_inserter(payload));it=optional.unserialize(it);returnit;}在这种情况下我如何推进输入迭代器以便每

c++ - 用纯虚拟类 copy-and-swap 成语

我正在尝试使用纯虚方法和“copy-and-swap”惯用法来实现虚类,但我遇到了一些问题。代码无法编译,因为我正在类A的赋值运算符中创建实例,其中包含纯虚方法。有没有办法使用纯虚方法和copyandswapidiom?classA{public:A(stringname):m_name(name){m_type="";}A(constA&rec):m_name(rec.m_name),m_type(rec.m_type){}friendvoidswap(A&lhs,A&rhs){std::swap(lhs.m_name,rhs.m_name);std::swap(lhs.m_type

c++ - allocator.construct 循环是否等于 std::uninitialized_copy?

在此背景下T是某种类型并且allocator是该类型的分配器对象。默认情况下为std::allocator但这不一定是真的。我有一大块内存被allocator.allocate(n)获取了.我还有一个容器con的T对象(比如std::vector)。我想用T初始化那block内存对象。内存块的位置存储在T*data中。.这两个代码示例是否始终相同?#include//example1std::uninitialized_copy(con.begin(),con.end(),data)//example2std::vector::const_iteratorin=con.begin();

c++ - __has_trivial_copy 在 clang 和 gcc 中的行为不同。谁是对的?

std::is_trivially_copyable在这两个编译器中仍然不被支持(至少gcc4.6是这样)。但是两者都提供了做得很好的__has_trivial_copy指令。除非涉及到已删除的复制构造函数。structA{A(Aconst&)=delete;};__has_trivial_copy(A)在clang中返回1,在gcc中返回0。我正在研究标准,但找不到说明删除复制构造函数时类是否仍被视为可平凡复制的条款。谁是对的?我倾向于相信gcc是正确的,因为structA根本不可复制,更不用说可复制了。此外,有一个广泛的共识,即删除的复制构造函数可以被视为私有(private)声明

c++ - 错误 C4996 : 'std::_Copy_impl' : Function call with parameters that may be unsafe

我知道这个问题在SO中被问过很多次,但这是与其他问题的不同。CompilerError:FunctioncallwithparametersthatmaybeunsafeVisualStudioWarningC4996xutility(2227):warningC4996:'std::_Copy_impl'失败的代码片段DWORDdwNumberOfNames=pExportDirectory->NumberOfNames;LPDWORDdwNames=(LPDWORD)((LPBYTE)hDLL+pExportDirectory->AddressOfNames);std::vecto

c++ - boost 图 : How to copy the nodes and edges of a graph without copying properties?

我正在使用带有捆绑属性的boost图。在我建立第一棵引用树之后。我想要其他几棵具有相同结构和层次结构但具有不同顶点和边缘属性的树。我发现有一个copy_graph方法,但不知道如何使用它来实现我的目的。比如我先创建一个引用树,VertexProperty1和EdgeProperty1是bundledpropertiestypedefboost::adjacency_listGraph;Graphg1;经过一些处理,g1包含了一些顶点和边。然后我想要一个具有不同捆绑属性的复制树。typedefboost::adjacency_listGraph2;copy_graph(g1,g2,???

c++ - 为什么没有 boost::copy_on_write_ptr?

我刚看到this不错的写时复制指针实现。它看起来非常通用和有用,所以我的问题是:这样的类是否包含在任何C++工具包(boost、loki等)中?如果不是,我真的很想知道为什么,因为它是一个非常有用的习惯用法,而且显然通用实现似乎是可行的(就像我链接到的那个)。 最佳答案 关于这种可能性存在很多争论,并且至少有一个建议版本最终以auto_ptr形式出现,用于引用计数的COW指针。不幸的是,COW的时代已经过去了。使COW指针(或COW-whatever)线程安全会引入严重的问题performanceproblems.编辑:重读,我觉得

c++ - 使用 boost::copy_graph 从 grid_graph 复制到 adjacency_list

我正在使用boost图形库并尝试初始化MutableGraph以网格的形式开始生活。边缘会在以后的生活中添加和删除,所以我认为adjacency_list是正确的选择。我对BGL的阅读表明,用这些边缘初始化它的明智方法是利用boost::grid_graph通过使用boost::copy_graph从boost::grid_graph复制可以免费为我制作所有初始边缘。我认为这是有道理的-copy_graph来自VertexListGraph模型的拷贝到一个模型MutableGraph,这正是我所拥有的。我最初尝试使用copy_graph的双参数版本,带着模糊的希望,其余部分的默认值会发

c++ - copy_backward 和 reverse_copy 之间的区别?

我正在阅读C++primer,看到这两个函数似乎具有相同的功能。谁能帮忙告诉我这两者有什么区别?谢谢。 最佳答案 reverse_copy实际上是将元素倒序放置。12345->54321copy_backward只是向后复制元素,但保留它们的相对顺序。123455先复制,但放在最后一个位置。所以你的输出仍然是:12345http://en.cppreference.com/w/cpp/algorithm/copy_backwardCopiestheelementsfromtherange,definedby[first,last),