草庐IT

Iterator与Generator

全部标签

generator - 作为扩展函数调用的序列生成器失败并显示 "receiver type mismatch"

我正在尝试从添加到LongRange的单个Long值生成序列。这有效:valseq=buildSequence{yield(2)yieldAll(3L..5)}但试图概括它,我似乎无法构造一个我可以成功调用的扩展函数:infixfunLong.join(R:LongRange):Sequence{valstart=thisreturnbuildSequence{yield(start)yieldAll(R)}}当我尝试调用它时:(2join3..5).forEach{/*dosomething*/}我明白了Error:(26,20)Kotlin:Unresolvedreference.

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++ - CMake Generator for Visual Studio Linux 跨平台

我想从CMake项目为跨平台Linux项目生成VisualStudio解决方案。VisualStudio2017跨平台工作负载运行良好,尤其是在调试方面。我用它来定位WSL。现在我有一个现有的LinuxCMake项目,我想在Windows和VisualStudio上开发并在WSL上构建它。我只是似乎没有看到为VisualStudio生成适当解决方案的方法。谁能赐教一下? 最佳答案 已经有somequeries支持CMake的“Linux”项目类型,但我不认为thereissomethingimplementedyet(查看代码,它无

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++ - std::string 构造函数中的 ITERATOR LIST CORRUPTED

下面在VS2005SP1的调试配置中编译的代码显示了两strip有“ITERATORLISTCORRUPTED”通知的消息。代码片段#define_SECURE_SCL0#define_HAS_ITERATOR_DEBUGGING0#include#includeintmain(){std::stringstreamstream;stream是编译器还是标准库的bug? 最佳答案 我的错!编辑:是的,编译器有问题。参见this--特别是社区内容部分。 关于c++-std::string构

c++ - 如何在编译时检查类型是否为 std::vector::iterator?

我遇到一个问题,我需要检测给定类型是否是已知嵌套类型的实例,例如std::vector::iterator在编译时。我想创建类型特征is_std_vector_iterator:#include#includetemplatestructis_std_vector_iterator:std::false_type{};templatestructis_std_vector_iterator::iterator>:std::true_type{};intmain(){return0;}但我收到编译器错误:$g++-std=c++0xtest.cpptest.cpp:7:error:tem

c++ - 为什么 std::regex_iterator 会导致此数据的堆栈溢出?

我一直在使用std::regex_iterator来解析日志文件。我的程序已经运行了几个星期并且已经解析了数百万行日志,直到今天,当今天我针对日志文件运行它并出现堆栈溢出时。事实证明,只有日志文件中的一个日志行导致了问题。有谁知道为什么我的正则表达式会导致如此大规模的递归?这是一个显示问题的独立小程序(我的编译器是VC2012):#include#include#includeusingnamespacestd;std::wstringtest=L"L3T1535679726859[CreateRegistryAction]CreatingREGISTRYAction:\n"L"Ide