标签: iterator

如何在迭代时从"ArrayList"中删除元素时避免"ConcurrentModificationException"?

我试图删除一些元素ArrayList迭代它像这样:

for (String str : myArrayList) {
    if (someCondition) {
        myArrayList.remove(str);
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,我ConcurrentModificationException试图在迭代时同时从列表中删除项目时得到一个myArrayList.有没有一些简单的解决方案来解决这个问题?

java iterator list arraylist

333
推荐指数
9
解决办法
38万
查看次数

按降序对矢量进行排序

我应该用吗?

std::sort(numbers.begin(), numbers.end(), std::greater<int>());
Run Code Online (Sandbox Code Playgroud)

要么

std::sort(numbers.rbegin(), numbers.rend());   // note: reverse iterators
Run Code Online (Sandbox Code Playgroud)

按降序对矢量进行排序?一种方法或另一种方法有任何好处或缺点吗?

c++ sorting iterator stl vector

296
推荐指数
10
解决办法
22万
查看次数

如何实现STL样式的迭代器并避免常见的陷阱?

我创建了一个集合,我想提供一个STL风格的随机访问迭代器.我正在寻找迭代器的示例实现,但我没有找到任何.我知道需要const重载[]*运算符.迭代器有什么要求是"STL风格",还有哪些其他缺陷需要避免(如果有的话)?

附加上下文:这是一个库,除非我真的需要,否则我不想引入任何依赖.我编写自己的集合,以便能够使用相同的编译器在C++ 03和C++ 11之间提供二进制兼容性(因此没有STL可能会破坏).

c++ iterator const-iterator

286
推荐指数
5
解决办法
17万
查看次数

从与条件匹配的iterable中获取第一个项目

我想从符合条件的列表中获取第一项.重要的是,生成的方法不会处理整个列表,这可能非常大.例如,以下功能就足够了:

def first(the_iterable, condition = lambda x: True):
    for i in the_iterable:
        if condition(i):
            return i
Run Code Online (Sandbox Code Playgroud)

这个函数可以用这样的东西:

>>> first(range(10))
0
>>> first(range(10), lambda i: i > 3)
4
Run Code Online (Sandbox Code Playgroud)

但是,我想不出一个好的内置/单线来让我这样做.如果我不需要,我不特别想复制这个功能.是否有内置方法可以使第一个项目符合条件?

python iterator

264
推荐指数
11
解决办法
15万
查看次数

将Iterator转换为ArrayList

考虑到Iterator<Element>,我们怎么可以转换IteratorArrayList<Element>(或List<Element>)的最好,最快的可能方式,这样我们就可以使用ArrayList它,例如的操作get(index),add(element)等等.

java iterator list arraylist

230
推荐指数
9
解决办法
26万
查看次数

为什么使用迭代器而不是数组索引?

请使用以下两行代码:

for (int i = 0; i < some_vector.size(); i++)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();
    some_iterator++)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我被告知第二种方式是首选.这究竟是为什么?

c++ iterator stl

227
推荐指数
13
解决办法
7万
查看次数

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

我有一个自定义容器类,我想写它iteratorconst_iterator类.

我之前从未这样做过,但我找不到合适的方法.关于迭代器创建的指导原则是什么,我应该注意什么?

我也想避免代码重复(我觉得const_iteratoriterator分享很多东西;应该是另一个子类吗?).

脚注:我很确定Boost有什么可以缓解的,但我不能在这里使用它,因为很多愚蠢的原因.

c++ iterator const-iterator

217
推荐指数
8
解决办法
17万
查看次数

如何在Java列表中获得反向列表视图?

我想在列表上有一个反向列表视图(以类似的方式List#sublist提供列表上的子列表视图).是否有一些提供此功能的功能?

我不想制作任何类型的列表副本,也不想修改列表.

如果我在这种情况下至少可以在列表上获得反向迭代器就足够了.


另外,我知道如何自己实现这一点.我只是问Java是否已经提供了这样的东西.

演示实施:

static <T> Iterable<T> iterableReverseList(final List<T> l) {
    return new Iterable<T>() {
        public Iterator<T> iterator() {
            return new Iterator<T>() {
                ListIterator<T> listIter = l.listIterator(l.size());                    
                public boolean hasNext() { return listIter.hasPrevious(); }
                public T next() { return listIter.previous(); }
                public void remove() { listIter.remove(); }                 
            };
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

我刚刚发现某些List实现具有descendingIterator()我需要的功能.虽然没有一般的这样的实现List.这有点奇怪,因为我看到的实现已经LinkedList足够通用了List.

java collections reverse iterator list

209
推荐指数
8
解决办法
25万
查看次数

198
推荐指数
6
解决办法
2万
查看次数

C++ STL向量:从索引获取迭代器?

所以,我编写了一堆代码,通过index []访问stl向量中的元素,但现在我只需要复制一个向量的块.它看起来像vector.insert(pos, first, last)我想要的功能......除了我只有第一个和最后一个作为整数.有没有什么好方法可以获得这些值的迭代器?

c++ iterator stl vector

194
推荐指数
4
解决办法
12万
查看次数