Tag: 迭代器

我如何迭代给定目录中的文件?

我需要遍历给定目录内的所有.asm文件,并对它们执行一些操作。 这怎么能以有效的方式完成呢?

获得std :: vector迭代器索引的最有效方法是什么?

我遍历一个向量,并需要迭代器当前指向的索引。 AFAIK这可以通过两种方式完成: it – vec.begin() std::distance(vec.begin(), it) 这些方法的优缺点是什么?

如何正确地实现自定义迭代器和const_iterator?

我有一个自定义的容器类,我想写的iterator和const_iterator类。 我从来没有这样做,我没有find一个合适的方法。 关于迭代器创build的准则是什么?我应该注意什么? 我也想避免代码重复(我觉得const_iterator和iterator共享很多东西;一个子类应该是另一个?)。 脚注:我非常确定,Boost有一些可以缓解这个问题的方法,但是由于许多愚蠢的原因,我无法在这里使用它。

迭代给定列表中的所有连续项目对

给出一个列表 l = [1,7,3,5] 我想迭代所有的连续列表项目对(1,7),(7,3),(3,5) ,即 for i in xrange(len(l)-1): x=l[i] y=l[i+1] # do something 我想以更紧凑的方式做到这一点,比如for (x,y) in someiterator(l): …有没有办法使用一些内置的python迭代器来做到这一点? 我相信itertools模块应该有一个解决scheme,但我无法弄清楚…

传统for循环与Java中的Iterator / foreach的性能

在遍历ArrayList,HashMap和其他集合的时候,有没有比较传统的for循环和迭代器的性能testing结果? 或者干脆为什么我应该使用Iterator over循环,反之亦然?

展平迭代器

是否有任何现有的迭代器实现(也许在boost)实现某种平坦化迭代器? 例如: unordered_set<vector<int> > s; s.insert(vector<int>()); s.insert({1,2,3,4,5}); s.insert({6,7,8}); s.insert({9,10,11,12}); flattening_iterator<unordered_set<vector<int> >::iterator> it( … ), end( … ); for(; it != end; ++it) { cout << *it << endl; } //would print the numbers 1 through 12

在lambdaexpression式中使用foreach循环的iteratorvariables – 为什么失败?

考虑下面的代码: public class MyClass { public delegate string PrintHelloType(string greeting); public void Execute() { Type[] types = new Type[] { typeof(string), typeof(float), typeof(int)}; List<PrintHelloType> helloMethods = new List<PrintHelloType>(); foreach (var type in types) { var sayHello = new PrintHelloType(greeting => SayGreetingToType(type, greeting)); helloMethods.Add(sayHello); } foreach (var helloMethod in helloMethods) { Console.WriteLine(helloMethod("Hi")); } } public string […]

用Python中的块(n)迭代一个迭代器?

你可以想一个很好的方法(也许与itertools)将一个迭代器分成给定大小的块? 因此,具有chunks(l,3) l=[1,2,3,4,5,6,7]变成迭代器[1,2,3], [4,5,6], [7] 我可以考虑一个小程序来做到这一点,但可能itertools不是一个好方法。

为什么Java的迭代器不是可迭代的?

为什么Iterator接口不能扩展Iterable ? iterator()方法可以简单地返回this 。 这是故意的还是仅仅是Javadevise师的疏忽? 能够像这样使用迭代器的for-each循环将是方便的: for(Object o : someContainer.listSomeObjects()) { …. } 其中listSomeObjects()返回一个迭代器。

为什么标准迭代器范围而不是?

为什么标准将end()定义为一个结束,而不是实际结束?