草庐IT

OutputIterator

全部标签

c++ - 自定义双向迭代器的 reverse_iterator 上的 for_each 需要 OutputIterator

我创建了一个简单的不可变双向迭代器:#include#include#include#include#includeclassmy_iterator:publicstd::iterator{intd_val;public:my_iterator():d_val(0){}my_iterator(intval):d_val(val){}my_iteratoroperator--(int){d_val--;returnmy_iterator(d_val+1);}my_iterator&operator--(){d_val--;return*this;}my_iteratoroperator+

c++ - 为什么C++标准库中没有std::transform_n函数?

我在草稿N4431中找不到transform_n函数的提及C++标准。这是故意的吗?如果不是,人们将如何为标准的future版本提出这一建议?下面是我将如何实现它:template_OutputIteratortransform_n(_InputIterator__first,Size__n,_OutputIterator__result,_UnaryOperation__op){for(Sizei=0;i_OutputIteratortransform_n(_InputIterator1__first1,Size__n,_InputIterator2__first2,_OutputI

C++ OutputIterator 后递增要求

C++要求OutputIterator类型X支持r++形式的表达式,其中r是X。此后缀增量必须在语义上等同于:(*){Xtmp=r;++r;返回tmp;}并且必须返回可转换为Xconst&的类型。在C++11中,请参阅24.2.4(但这不是新的)。在同一部分,它说Algorithmsonoutputiteratorsshouldneverattempttopassthroughthesameiteratortwice.Theyshouldbesinglepassalgorithms.给定(*),上面,假设我复制返回值,如Xa(r++);假设r在递增之前是可解引用的,但没有被解引用。是否

boost - 使用boost进程库防止子进程继承父进程打开的TCP端口

我有一个C++应用程序在特定的TCP端口上监听。该应用程序还使用Boost进程库中的Boost子类启动子进程。一旦子进程启动,netstat命令的输出就会显示TCP端口也与创建的子进程相关联。有没有一种方法可以防止child在使用boost过程库时继承parent的端口?child被创建为:bp::child*proc=newbp::child("a.out",bp::std_out>stdout,bp::std_err>stderr);我正在使用Linux平台。谢谢。 最佳答案 目前没有办法做到这一点。我玩过一个补丁来添加它,但我

c++ - 对双倍递增的 OutputIterator 的取消引用赋值

根据(优秀的)问题C++OutputIteratorpost-incrementrequirements,我们观察到对于OutputIterator类型X的可取消引用和递增值r,以及适当类型的值o,表达式*r++=o;是有效的并且具有等同于的语义Xa(r);++r;*a=o;但是,如果r在中间期间增加了不止一次,那么a是否仍然是可解引用赋值的?也就是说,这个代码有效吗?Xa(r);++r;++r;*a=o;很难看出对一个值的操作如何影响对另一个值的操作的有效性,但是例如InputIterator(24.2.3)在++r的后置条件下有:Anycopiesofthepreviousvalu