Tag: 迭代器

我可以将逆向迭代器转换为向前迭代器吗?

我有一个名为Action的类,它本质上是一个Move对象的双层包装器。 因为我需要遍历向前和向后移动的双转移,所以我有一个前向迭代器和一个reverse_iterator作为类的成员variables。 之所以这样,是因为我必须知道,当我前进或后退的时候,我已经走过了一个人的“终点”。 这个类看起来像这样: class Action { public: SetMoves(std::deque<Move> & dmoves) { _moves = dmoves; } void Advance(); bool Finished() { if( bForward ) return (currentfwd==_moves.end()); else return (currentbck==_moves.rend()); } private: std::deque<Move> _moves; std::deque<Move>::const_iterator currentfwd; std::deque<Move>::const_reverse_iterator currentbck; bool bForward; }; Advancefunction如下: void Action::Advance { if( bForward) currentfwd++; else currentbck++; } 我的问题是,我想能够检索一个迭代器到当前的Move对象,而不需要查询我是前进还是后退。 这意味着一个函数返回一种types的迭代器,但我有两种types。 我应该忘记返回一个迭代器,而是返回一个Move对象的const引用? 最好的祝愿, BeeBand

yield语句实现

我想以一种容易理解的forms来了解yield声明的一切 。 在实现迭代器模式时,我已经阅读了yield语句和它的简易性。 但是,大部分是非常干燥的。 我想深入了解微软如何处理回报率。 另外,你什么时候使用yield break?

如何在Python中一次读取N行文件?

我需要一次读至多N行,直到EOF读大文件。 什么是在Python中最有效的方法? 就像是: with open(filename, 'r') as infile: while not EOF: lines = [get next N lines] process(lines)

迭代器和指针如何相关?

带有迭代器的代码看起来非常像带指针的代码。 迭代器是一些模糊的types(例如std::vector<int>::iterator )。 我没有得到的是迭代器和指针是如何相互关联的 – 迭代器是一个包装指针的重载操作,以推进到相邻的元素还是别的东西?

迭代器vs

我在采访中被问到使用迭代器使用for循环的优点是什么,或者使用循环迭代器有什么优势? 任何机构都可以回答,以便将来如果我面临类似的问题,那么我可以回答

Iterator和Listiterator之间的区别?

Iterator ite = Set.iterator(); Iterator ite = List.iterator(); ListIterator listite = List.listIterator(); 我们可以使用Iterator来遍历一个Set或一个List或一个Map 。 但是ListIterator只能用来遍历一个List ,它不能遍历一个Set 。 为什么? 我知道主要的区别在于,使用迭代器我们只能在一个方向上移动,但是使用ListIterator我们可以在两个方向上移动。 还有其他的区别吗? ListIterator和Iterator优点是什么?

python groupby的行为?

>>from itertools import groupby >>keyfunc = lambda x : x > 500 >>obj = dict(groupby(range(1000), keyfunc)) >>list(obj[True]) [999] >>list(obj[False]) [] 范围(1000)在条件(x> 500)中显然按默认sorting。 我期待从0到999的数字在条件(x> 500)中被分组。 但是由此产生的字典只有999。 其他数字在哪里? 任何人都可以解释这里发生了什么?

C#中的成对迭代或滑动窗口枚举器

如果我有一个像IEnumerable: string[] items = new string[] { "a", "b", "c", "d" }; 我想循环所有的连续项目对(2号滑动窗口)。 这将是 ("a","b"), ("b", "c"), ("c", "d") 我的解决办法是这样的 public static IEnumerable<Pair<T, T>> Pairs(IEnumerable<T> enumerable) { IEnumerator<T> e = enumerable.GetEnumerator(); e.MoveNext(); T current = e.Current; while ( e.MoveNext() ) { T next = e.Current; yield return new Pair<T, T>(current, next); current = next; } […]

增强型for语句如何为数组工作,以及如何获取数组的迭代器?

鉴于以下代码片段: int[] arr = {1, 2, 3}; for (int i : arr) System.out.println(i); 我有以下问题: 上面的每个循环是如何工作的? 如何获得Java中的数组的迭代器? 数组是否转换为列表来获取迭代器?

如何在PHP中使用RegexIterator

我还没有find一个很好的例子,如何使用PHP的RegexIteratorrecursion遍历目录。 最终的结果将是我想指定一个目录,并find一些给定的扩展名中的所有文件。 例如只说html / php扩展。 此外,我想过滤出types为.Trash-0,.Trash-500等文件夹。 <?php $Directory = new RecursiveDirectoryIterator("/var/www/dev/"); $It = new RecursiveIteratorIterator($Directory); $Regex = new RegexIterator($It,'/^.+\.php$/i',RecursiveRegexIterator::GET_MATCH); foreach($Regex as $v){ echo $value."<br/>"; } ?> 是我到目前为止,但导致:致命错误:未收到的exception'UnexpectedValueException'消息'RecursiveDirectoryIterator :: __构造(/media/hdmovies1/.Trash-0) 有什么build议么?