标签: iterator

通过AS3字典高效循环

for (var k in dictionary) 
{
  var key:KeyType = KeyType(k);
  var value:ValType = ValType(dictionary[k]); // <-- lookup
  // do stuff
}
Run Code Online (Sandbox Code Playgroud)

这是我用来遍历字典中的条目.正如您在每次迭代中看到的那样,我在字典中执行查找.是否有更有效的方法来迭代字典(同时保持对密钥的访问)?

iteration iterator actionscript-3

45
推荐指数
1
解决办法
5万
查看次数

如何获取std :: list中的next(previous)元素而不递增(递减)迭代器?

假设我有一个std::list<int> lst和一些std::list<int>::iterator it迭代列表.并依赖于it我想要使​​用的值it + 1it - 1在我的代码中.有没有一些好方法可以做到这一点next(),prev()(我在stl文档中找不到这样的东西)?或者我应该复制it每次并增加(减少)副本?

c++ iterator list

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

For-each vs Iterator.哪个是更好的选择

请考虑以下情形.

List<String> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

现在我添加了String此列表的值.

我使用以下方法来查看列表中的每个元素.

选项一 - 使用 for-each

for (String i : list) {
        System.out.println(i);
    } 
Run Code Online (Sandbox Code Playgroud)

选项二 - 使用 Iterator

Iterator it=list.iterator();
while (it.hasNext()){
   System.out.println(it.next());
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道如果我使用for-each而不是有任何性能优势Iterator.现在在Java中使用Iterator也是一种不好的做法?

java foreach iterator

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

如何在流式传输时删除HashMap的元素(lambda)

我有以下情况需要从流中删除元素.

map.entrySet().stream().filter(t -> t.getValue().equals("0")).
            forEach(t -> map.remove(t.getKey()));
Run Code Online (Sandbox Code Playgroud)

在Java 8之前的代码中,可以从迭代器中删除 - 在这里处理这种情况的最佳方法是什么?

java dictionary iterator java-stream

45
推荐指数
2
解决办法
3万
查看次数

将迭代器转换为指针?

我有一个std::vectorn元素.现在我需要将指针传递n-1给具有函数最后元素的向量.

例如,我的vector<int> foo包含(5,2,6,87,251).一个函数需要vector<int>*,我想传递一个指针(2,6,87,251).

我可以(安全地)获取迭代器++foo.begin(),将其转换为指针并将其传递给函数吗?还是用&foo[1]

更新:人们建议我改变我的函数来获取迭代器而不是指针.在我的情况下,这似乎是不可能的,因为我提到的find功能是...的功能unordered_set<std::vector*>.那么在这种情况下,是将n-1元素复制foo到一个新的向量中并find使用指向该唯一选项的指针进行调用?非常低效!这就像画家Shlemiel,特别是因为我必须查询许多子集:最后一个n-1,然后n-2等等元素,看看它们是否在unordered_set.

c++ pointers iterator stl vector

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

是否可以在Java中合并迭代器?

是否可以在Java中合并迭代器?我有两个迭代器,我想组合/合并它们,以便我可以一次性迭代它们的元素(在同一个循环中)而不是两个步骤.那可能吗?

请注意,两个列表中的元素数量可能不同,因此两个列表上的一个循环不是解决方案.

Iterator<User> pUsers = userService.getPrimaryUsersInGroup(group.getId());
Iterator<User> sUsers = userService.getSecondaryUsersInGroup(group.getId());

while(pUsers.hasNext()) {
  User user = pUsers.next();
  .....
}

while(sUsers.hasNext()) {
  User user = sUsers.next();
  .....
}
Run Code Online (Sandbox Code Playgroud)

java iteration iterator

44
推荐指数
7
解决办法
3万
查看次数

Java获取集合的最后一个元素

我有一个集合,我想获得该集合的最后一个元素.什么是最直接,最快捷的方式?

一种解决方案是首先使用toArray(),然后返回数组的最后一个元素.还有其他更好的吗?

java collections iterator

44
推荐指数
6
解决办法
11万
查看次数

如何删除const_iterator的constness?

作为扩展到这个问题const_iterators更快?,我有另一个问题const_iterators.如何删除一个常量const_iterator?虽然迭代器是指针的通用形式,但仍然const_iteratoriterators是两个不同的东西.因此,我相信,我也不能用来const_cast<>转换const_iteratoriterators.

一种方法可能是您定义一个迭代器,该迭代器将元素移动到该const_iterator点的元素.但这看起来像是一个线性时间算法.

对于实现这一目标的最佳方法有什么想法吗?

c++ iterator stl const-iterator

43
推荐指数
3
解决办法
2万
查看次数

如何使用Python C API创建生成器/迭代器?

如何使用Python C API复制以下Python代码?

class Sequence():
    def __init__(self, max):
        self.max = max
    def data(self):
        i = 0
        while i < self.max:
            yield i
            i += 1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这个:

#include <Python/Python.h>
#include <Python/structmember.h>

/* Define a new object class, Sequence. */
typedef struct {
    PyObject_HEAD
    size_t max;
} SequenceObject;

/* Instance variables */
static PyMemberDef Sequence_members[] = {
    {"max", T_UINT, offsetof(SequenceObject, max), 0, NULL},
    {NULL} /* Sentinel */
};

static int Sequence_Init(SequenceObject *self, PyObject *args, PyObject *kwds)
{
    if (!PyArg_ParseTuple(args, "k", &(self->max))) { …
Run Code Online (Sandbox Code Playgroud)

c python iterator generator python-c-api

43
推荐指数
2
解决办法
8375
查看次数

如何为一个简单的结构实现Iterator和IntoIterator?

有人会如何实现以下结构的特征IteratorIntoIterator特征?

struct Pixel {
    r: i8,
    g: i8,
    b: i8,
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下各种形式但没有成功.

impl IntoIterator for Pixel {
    type Item = i8;
    type IntoIter = Iterator<Item=Self::Item>;

    fn into_iter(self) -> Self::IntoIter {
        [&self.r, &self.b, &self.g].into_iter()
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个编译错误

error[E0277]: the trait bound `std::iter::Iterator<Item=i8> + 'static: std::marker::Sized` is not satisfied
 --> src/main.rs:7:6
  |
7 | impl IntoIterator for Pixel {
  |      ^^^^^^^^^^^^ the trait `std::marker::Sized` is not implemented for `std::iter::Iterator<Item=i8> + 'static`
  |
  = note: `std::iter::Iterator<Item=i8> + 'static` does …
Run Code Online (Sandbox Code Playgroud)

iterator rust

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