草庐IT

istream-iterator

全部标签

Kotlin:如何将序列(协程)作为 Iterable<T> 传递

我不明白如何在需要Iterable的地方传递协程。假设我有以下功能:funiterate(iterable:Iterable){for(objiniterable){//dosomething..}}我要传递一个协程:iterate(??{for(objinobjects){yield(transform(obj))}})我应该放什么而不是??才能使它起作用?我尝试了buildIterator和buildSequence但它们都不起作用。 最佳答案 您可以使用asIterable():valseq=buildSequence{for

c++ - 迭代器或 reverse_iterator 的一个变量?

这个问题在这里已经有了答案:CanIconvertareverseiteratortoaforwarditerator?(5个答案)关闭4年前。我想在for循环中迭代一些std::vector,但根据某些条件,vector应该向前或向后迭代。我想,我可以通过使用普通迭代器或像这样的反向迭代器轻松地做到这一点:#include#includeusingnamespacestd;intmain(){vectorvec{0,1,2,3,5,6,7};boolreverse=true;std::iteratorit,end_it;if(reverse){it=vec.rbegin();end_

c++ - 在 boost 元组、zip_iterator 等上使用 std::get 和 std::tie

使用std::get()有哪些选择?和std::tie()与boost结构一起?例子:我想使用基于范围的for循环对多个容器进行迭代。我可以实现zip函数,它使用boost::zip_iterator.#include#includetemplateautozip(TContainer&...containers)->boost::iterator_range>{autozip_begin=boost::make_zip_iterator(boost::make_tuple(std::begin(containers)...));autozip_end=boost::make_zip_

c++ - regex_token_iterator *it++ 错误?

对于以下代码:#include#includeusingnamespacestd;intmain(intargc,char*argv[]){regexreg("/");strings="Split/Values/Separated/By/Slashes";sregex_token_iteratorit{std::begin(s),std::end(s),reg,-1};sregex_token_iteratorend;while(it!=end){cout应该输出:SplitValuesSeparatedBySlashes但是它输出这个:ValuesSeparatedBySlashes

c++ - 具有共享 streambuf 的 istream 和 ostream 对于双工 I/O 是相互线程安全的吗?

我已经为缓冲网络套接字I/O派生了一个自定义streambuf,覆盖下溢、上溢和同步,以便下溢与其他两个集相互线程安全,(我有单独的输入和输出内部缓冲区).这工作正常,但我想将它用于全双工I/O,其中一个线程可以输入而另一个线程正在输出,所以我想使用istream作为接收线程,使用ostream作为发送线程,同时共享网络streambuf因为它抽象了所有套接字的东西。我的问题是,如果输入和输出缓冲区是分开的,streambuf成员在多大程度上受istream上的输入操作的影响与受ostream上的输出操作影响的streambuf成员脱节?能够做到这一点会更好,而不是必须将套接字的东西从

c++ - iter_swap 可以专门化吗?

如果我有一个容器std::vectoritems,我可以创建一个IndirectIterator包装std::vector::iterator并允许遍历T的而不是T*的。我可以专攻iter_swap对于IndirectIterator使标准算法(例如std::sort)通过指针交换项目?即,如果我编写以下内容,它会对标准算法产生任何影响吗?namespacesome_namespace{templateclassIndirectIterator{IterTm_base;public:typedefIterTbase_iterator;typedef/*...*/reference;/*

c++ - const_iterator 和 const 指针

Lippman等人在C++primerFifthEdition的第108页上说:Aconst_iteratorbehaveslikeaconstpointer(§2.4.2,p.62).Likeaconstpointer,aconst_iteratormayreadbutnotwritetheelementitdenotes;[...]const_iterator的功能我明白了,但是这个比较正确吗?我认为它的行为更像是“指向const的指针”。我是不是误会了什么? 最佳答案 你是对的。作者明确引用了他们书中的第2.4.2节(我刚刚更

c++ - 为什么 C++ 容器不实现删除(reverse_iterator position)?

我查看了一些C++容器(vector、deque、list、map、set),发现它们都没有实现erase(reverse_iteratorposition)如answer中所述,有一种方法可以从reverse_iterator获取迭代器.但是为什么上面的容器没有实现带reverse_iterator参数的erase成员函数呢?iterator和reverse_iterator之间是否存在显着差异,这使得此类实现变得困难或由于其他原因未实现? 最佳答案 几乎任何容器函数都可以问同样的问题:为什么不为反向迭代器实现它?答案可能是一个简

c++ - 初始化对 istream 的引用

我正在尝试编写我的程序,以便它可以处理StdIn或命令行上指定的文件。我通过尝试初始化对istream的引用来引用cin或ifstream,使用条件.(描述了类似的技术here和here)但是当我尝试使用ifstream时,我似乎收到一个错误,指出basic_istream移动构造函数被声明为protected。istream&refToCIN(cin);//ThisisOKconstistream&refToFile=ifstream(args[1]);//ThisisOKconstistream&inStream(FileIsProvided()?ifstream(args[1])

c++ - 确定 std::istream 长度的更好方法?

是否有比以下方法更好的方法来确定std::istream的长度:std::istream*pcStream=GetSomeStream();pcStream->seekg(0,ios::end);unsignedintuiLength=pcStream->tellg();必须搜索到流的末尾然后返回到原始位置似乎真的很浪费,尤其是当流可能指向某些慢速媒体(如CD或DVD)上的文件时。 最佳答案 “最好”的方法是避免需要长度:)并非所有流都是可搜索的(例如,想象网络套接字上的istream)tellg()的返回类型不一定是数字(唯一的要