标签: iterator

什么是同时迭代两个或更多容器的最佳方法

C++ 11提供了多种迭代容器的方法.例如:

基于范围的循环

for(auto c : container) fun(c)
Run Code Online (Sandbox Code Playgroud)

的std :: for_each的

for_each(container.begin(),container.end(),fun)
Run Code Online (Sandbox Code Playgroud)

但是,建议的方法是迭代两个(或更多)相同大小的容器来完成以下操作:

for(unsigned i = 0; i < containerA.size(); ++i) {
  containerA[i] = containerB[i];
}
Run Code Online (Sandbox Code Playgroud)

c++ containers iterator c++11

98
推荐指数
10
解决办法
7万
查看次数

什么是Java中的故障安全和失败快速迭代器

Java中有两种类型的迭代器:故障安全和故障快速.

这是什么意思,它们之间的区别是什么?

java iterator terminology

96
推荐指数
3
解决办法
9万
查看次数

如何使用迭代器导航向量?(C++)

目标是访问字符串向量的"第n"元素,而不是[]运算符或"at"方法.根据我的理解,迭代器可用于浏览容器,但我以前从未使用过迭代器,而我正在阅读的内容令人困惑.

如果有人能给我一些如何实现这一目标的信息,我将不胜感激.谢谢.

c++ iterator vector

95
推荐指数
4
解决办法
31万
查看次数

迭代打字稿地图

我正在尝试迭代打字稿地图,但我一直收到错误,我找不到任何解决方案,因为这样一个微不足道的问题.

我的代码是:

myMap : Map<string, boolean>;
for(let key of myMap.keys()) {
   console.log(key);
}
Run Code Online (Sandbox Code Playgroud)

我得到错误:

类型'IterableIteratorShim <[string,boolean]>'不是数组类型或字符串类型.

完整堆栈跟踪:

错误:Typescript发现以下错误:/home/project/tmp/broccoli_type_script_compiler-input_base_path-q4GtzHgb.tmp/0/src/app/project/project-data.service.ts(21,20):输入'IterableIteratorShim <[string ,boolean]>'不是数组类型或字符串类型.在BroccoliTypeScriptCompiler._doIncrementalBuild(/home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:115:19)BroccoliTypeScriptCompiler.build(/ home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:43:10)在/home/project/node_modules/broccoli-caching-writer/index.js:152:21在lib $ rsvp $$ internal $$ tryCatch(/ home/project/node_modules/rsvp) /dist/rsvp.js:1036:16)lib $ rsvp $$内部$$ invokeCallback(/home/project/node_modules/rsvp/dist/rsvp.js:1048:17)在lib $ rsvp $$ internal $$发布(/home/project/node_modules/rsvp/dist/rsvp.js:1019:11)在lib $ rsvp $ asap $$ flush(/home/project/node_modules/rsvp/dist/rsvp.js:1198:9) at_combinedTickCallback(internal/process/next_tick.js:67:7)at process._tickCallback(internal/process/next_tick.js:98:9)

我正在使用angular-cli beta5和typescript 1.8.10,我的目标是es5.有没有人有这个问题?

maps iterator typescript

95
推荐指数
10
解决办法
15万
查看次数

zip(*[iter(s)]*n)如何在Python中运行?

s = [1,2,3,4,5,6,7,8,9]
n = 3

zip(*[iter(s)]*n) # returns [(1,2,3),(4,5,6),(7,8,9)]
Run Code Online (Sandbox Code Playgroud)

zip(*[iter(s)]*n)工作怎么样?如果用更详细的代码编写它会是什么样子?

python iterator

93
推荐指数
6
解决办法
3万
查看次数

使用Iterator时如何获取当前循环索引?

我正在使用迭代器迭代一个集合,我想得到当前元素的索引.

我怎样才能做到这一点?

java iterator

93
推荐指数
5
解决办法
14万
查看次数

单行检查迭代器是否产生至少一个元素?

目前我这样做:

try:
    something = iterator.next()
    # ...
except StopIteration:
    # ...
Run Code Online (Sandbox Code Playgroud)

但我想要一个表达式,我可以放在一个简单的if陈述中.是否有任何内置功能可以使这些代码看起来不那么笨拙?

any()False如果iterable为空,则返回,但如果不是,则可能会迭代所有项.我只需要它来检查第一项.


有人问我要做什么.我编写了一个执行SQL查询并生成结果的函数.有时当我调用此函数时,我只想知道查询是否返回任何内容并根据它做出决定.

python iterator

92
推荐指数
6
解决办法
3万
查看次数

我们可以用Java编写自己的迭代器吗?

如果我有一个包含的列表,[alice, bob, abigail, charlie]并且我想编写一个迭代器,以便迭代以'a'开头的元素,我可以编写自己的吗?我怎样才能做到这一点 ?

java iterator

92
推荐指数
6
解决办法
21万
查看次数

获取迭代器的计数/长度/大小的最佳方法是什么?

是否有一种"计算"快速的方法来获取迭代器的计数?

int i = 0;
for ( ; some_iterator.hasNext() ; ++i ) some_iterator.next();
Run Code Online (Sandbox Code Playgroud)

......似乎浪费了CPU周期.

java iterator

89
推荐指数
6
解决办法
14万
查看次数

JavaScript - myArray.forEach与for循环的细微差别

我见过很多建议使用的问题:

for (var i = 0; i < myArray.length; i++){ /* ... */ }
Run Code Online (Sandbox Code Playgroud)

代替:

for (var i in myArray){ /* ... */ }
Run Code Online (Sandbox Code Playgroud)

对于数组,由于迭代不一致(参见此处).


但是,我似乎无法找到任何似乎更喜欢面向对象循环的东西:

myArray.forEach(function(item, index){ /* ... */ });
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎更直观.

对于我目前的项目,IE8的兼容性很重要,我正在考虑使用Mozilla的polyfill,但是我不能100%确定它是如何工作的.

  • 循环标准(上面的第一个例子)和现代浏览器的Array.prototype.forEach实现之间有什么区别吗?
  • 现代浏览器实现与上面链接的Mozilla实现之间有什么区别(特别是关于IE8)?
  • 性能不是一个问题,只是与迭代属性的一致性.

javascript arrays iterator for-loop internet-explorer-8

88
推荐指数
3
解决办法
4万
查看次数