Questions tagged «iterator»

迭代器是一种面向对象的编程模式,它允许遍历整个集合,而与物理内存中的实际实现或对象地址无关。它是“四人帮”的行为设计模式之一。

30
“ yield”关键字有什么作用?
yield关键字在Python中的用途是什么? 例如,我试图理解这段代码1: def _get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist < self._median: yield self._leftchild if self._rightchild and distance + max_dist >= self._median: yield self._rightchild 这是呼叫者: result, candidates = [], [self] while candidates: node = candidates.pop() distance = node._get_dist(obj) if distance <= max_dist and distance >= min_dist: result.extend(node._values) …

6
如何并行地遍历两个列表?
我在Python中有两个可迭代的对象,我想成对地遍历它们: foo = (1, 2, 3) bar = (4, 5, 6) for (f, b) in some_iterator(foo, bar): print "f: ", f, "; b: ", b 它应导致: f: 1; b: 4 f: 2; b: 5 f: 3; b: 6 一种方法是遍历索引: for i in xrange(len(foo)): print "f: ", foo[i], "; b: ", …



6
迭代器失效规则
C ++容器的迭代器失效规则是什么? 最好是摘要列表格式。 (注意:这本来是Stack Overflow的C ++ FAQ的一个条目。如果您想批评以这种形式提供FAQ的想法,则可以在开始所有这些操作的meta上进行发布。)该问题在C ++聊天室中进行监控,该问题最初是从FAQ想法开始的,所以提出这个想法的人很可能会读懂您的答案。)
543 c++  c++11  iterator  c++17  c++-faq 


7
如何将迭代器转换为流?
我正在寻找一种Iterator将a 转换为Stream或更具体地以将“迭代器”作为流“查看”的简洁方法。 出于性能原因,我想避免在新列表中复制迭代器: Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Collection<String> copyList = new ArrayList<String>(); sourceIterator.forEachRemaining(copyList::add); Stream<String> targetStream = copyList.stream(); 根据评论中的一些建议,我也尝试使用Stream.generate: public static void main(String[] args) throws Exception { Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Stream<String> targetStream = Stream.generate(sourceIterator::next); targetStream.forEach(System.out::println); } 但是,我得到了NoSuchElementException(因为没有调用hasNext) Exception in thread "main" java.util.NoSuchElementException at java.util.AbstractList$Itr.next(AbstractList.java:364) at Main$$Lambda$1/1175962212.get(Unknown …
468 java  iterator  java-8 



11
按降序对向量排序
我应该使用 std::sort(numbers.begin(), numbers.end(), std::greater<int>()); 要么 std::sort(numbers.rbegin(), numbers.rend()); // note: reverse iterators 按降序对向量排序?一种方法或另一种方法有什么优点或缺点?
310 c++  sorting  stl  vector  iterator 

8
如何实现STL样式的迭代器并避免常见的陷阱?
我制作了一个集合,希望为其提供STL样式的随机访问迭代器。我在寻找迭代器的示例实现,但没有找到任何实现。我知道需要对const重载[]和*运算符。将迭代器设为“ STL样式”的要求是什么?还要避免其他陷阱(如果有)? 其他上下文:这是针对库的,除非真正需要,否则我不想引入任何依赖关系。我编写了自己的集合,以便能够使用相同的编译器在C ++ 03和C ++ 11之间提供二进制兼容性(因此不会破坏STL)。

13
从符合条件的可迭代项中获取第一项
我想从符合条件的列表中获得第一项。重要的是,生成的方法不能处理整个列表,这可能会很大。例如,以下功能是足够的: def first(the_iterable, condition = lambda x: True): for i in the_iterable: if condition(i): return i 可以使用以下功能: >>> first(range(10)) 0 >>> first(range(10), lambda i: i > 3) 4 但是,我想不出一个好的内置式/单层式来让我这样做。如果不需要,我特别不想复制此功能。是否有内置的方法来获取与条件匹配的第一项?
303 python  iterator 

12
将Iterator转换为ArrayList
考虑到Iterator<Element>,我们怎么可以转换Iterator到ArrayList<Element>(或List<Element>)的最佳和最快的方式可能的,这样我们就可以用ArrayList的就可以了,如操作get(index),add(element)等等。
241 java  list  arraylist  iterator 

6
如何正确实现自定义迭代器和const_iterators?
我有一个自定义容器类,我想为其编写iterator和const_iterator类。 我以前从未做过,但是找不到合适的方法。关于迭代器创建的准则是什么,我应该注意什么? 我还想避免代码重复(我感觉到const_iterator并iterator共享许多东西;一个应该继承另一个吗?)。 脚注:我很确定Boost可以缓解此问题,但是由于许多愚蠢的原因,我不能在这里使用它。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.