标签: iterator

迭代时从STL集中删除元素

我需要浏览一个集合并删除符合预定义条件的元素.

这是我写的测试代码:

#include <set>
#include <algorithm>

void printElement(int value) {
    std::cout << value << " ";
}

int main() {
    int initNum[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    std::set<int> numbers(initNum, initNum + 10);
    // print '0 1 2 3 4 5 6 7 8 9'
    std::for_each(numbers.begin(), numbers.end(), printElement);

    std::set<int>::iterator it = numbers.begin();

    // iterate through the set and erase all even numbers
    for (; it != numbers.end(); ++it) {
        int n = *it; …
Run Code Online (Sandbox Code Playgroud)

c++ iterator std set c++-standard-library

140
推荐指数
4
解决办法
9万
查看次数

Iterator和Listiterator之间的区别?

Iterator ite = Set.iterator();
Iterator ite = List.iterator();

ListIterator listite = List.listIterator();
Run Code Online (Sandbox Code Playgroud)

我们可以Iterator用来遍历一个Set或一个List或一个Map.但是ListIterator只能用来遍历一个List,它不能遍历一个Set.为什么?

我知道主要区别在于,使用迭代器,我们只能朝一个方向行进,但ListIterator我们可以向两个方向行进.还有其他差异吗?ListIterator超过任何优势Iterator

java iterator list set listiterator

133
推荐指数
3
解决办法
12万
查看次数

Python列表迭代器行为和下一个(迭代器)

考虑:

>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Run Code Online (Sandbox Code Playgroud)

因此,正如预期的那样,推进迭代器是通过改变同一个对象来处理的.

在这种情况下,我希望:

a = iter(list(range(10)))
for i in a:
   print(i)
   next(a)
Run Code Online (Sandbox Code Playgroud)

跳过每个第二个元素:调用next应该使迭代器前进一次,然后循环的隐式调用应该再次前进 - 并且第二次调用的结果将被分配给i.

它没有.循环打印列表中的所有项目,而不跳过任何项目.

我的第一个想法是,这可能发生,因为循环调用iter它传递的内容,这可能会给出一个独立的迭代器 - 事实并非像我们所说的那样iter(a) is a.

那么,为什么next在这种情况下似乎没有推进迭代器呢?

python iteration iterator list

133
推荐指数
4
解决办法
20万
查看次数

如果在从头到尾迭代时调用map元素上的erase()会发生什么?

在下面的代码中,我遍历一个map并测试是否需要擦除一个元素.擦除元素并继续迭代是否安全,或者我是否需要在另一个容器中收集密钥并执行第二个循环来调用erase()?

map<string, SerialdMsg::SerialFunction_t>::iterator pm_it;
for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++)
{
    if (pm_it->second == delete_this_id) {
        port_map.erase(pm_it->first);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:当然,我读了这个问题,我认为这个问题没有关系,但回答了我的问题.

c++ iterator stl

132
推荐指数
2
解决办法
8万
查看次数

迭代node.js中的对象键

从Javascript 1.7开始,有一个Iterator对象,允许这样:

var a={a:1,b:2,c:3};
var it=Iterator(a);

function iterate(){
    try {  
        console.log(it.next());
        setTimeout(iterate,1000);
    }catch (err if err instanceof StopIteration) {  
        console.log("End of record.\n");  
    } catch (err) {  
        console.log("Unknown error: " + err.description + "\n");  
    }  

}
iterate();
Run Code Online (Sandbox Code Playgroud)

在node.js中有这样的东西吗?

现在我正在使用:

function Iterator(o){
    /*var k=[];
    for(var i in o){
        k.push(i);
    }*/
    var k=Object.keys(o);
    return {
        next:function(){
            return k.shift();
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

但是通过存储所有对象键会产生大量开销k.

javascript iterator node.js

132
推荐指数
2
解决办法
26万
查看次数

什么是"Ruby方式"一次迭代两个数组

更多的语法好奇心而不是要解决的问题......

我有两个长度相等的数组,并希望一次迭代它们 - 例如,在某个索引处输出它们的值.

@budget = [ 100, 150, 25, 105 ]
@actual = [ 120, 100, 50, 100 ]
Run Code Online (Sandbox Code Playgroud)

我知道我可以each_index像这样使用和索引数组:

@budget.each_index do |i|
  puts @budget[i]
  puts @actual[i]
end
Run Code Online (Sandbox Code Playgroud)

有没有Ruby方法可以更好地做到这一点?这样的东西?

# Obviously doesn't achieve what I want it to - but is there something like this?
[@budget, @actual].each do |budget, actual|
  puts budget
  puts actual
end
Run Code Online (Sandbox Code Playgroud)

ruby arrays iterator

124
推荐指数
6
解决办法
5万
查看次数

const_iterator和iterator有什么区别?

这两个关于STL内部实现的区别是什么.性能有什么不同?我想当我们在"只读明智"中遍历矢量时,我们更喜欢const_iterator,对吧?

谢谢.

c++ iterator stl const-iterator

124
推荐指数
3
解决办法
10万
查看次数

为什么迭代List会比索引更快?

阅读ADT列表Java文档,它说:

List接口提供了四种对列表元素进行位置(索引)访问的方法.列表(如Java数组)基于零.请注意,对于某些实现(例如,LinkedList类),这些操作可以与索引值成比例地执行.因此,如果调用者不知道实现,则迭代列表中的元素通常优选通过它进行索引.

这到底是什么意思?我不明白得出的结论.

java iterator list

124
推荐指数
4
解决办法
1万
查看次数

使用'for'循环遍历C++ Vector

我是C++语言的新手.我已经开始使用向量,并且已经注意到在我看到的所有代码中通过索引迭代通过向量,for循环的第一个参数总是基于向量.在Java中,我可以使用ArrayList执行类似的操作:

for(int i=0; i < vector.size(); i++){
   vector[i].doSomething();
}
Run Code Online (Sandbox Code Playgroud)

有没有理由我在C++中没有看到这个?这是不好的做法吗?

c++ iterator for-loop coding-style

119
推荐指数
11
解决办法
39万
查看次数

C++ STL中const_iterator和非const迭代器之间有什么区别?

a const_iterator和an 之间的区别是什么iterator?你在哪一个使用另一个?

c++ iterator stl const

118
推荐指数
5
解决办法
8万
查看次数