标签: iterator

丢弃需要输出迭代器的函数的输出

假设C++中有一个模板函数可以完成一些有用的工作,但也可以通过输出迭代器输出一系列值.现在假设这个值序列有时很有趣,但在其他值上没有用.在STL中是否有一个可以实例化的迭代器类,它可以被实例化并传递给函数,并将忽略函数尝试分配给输出迭代器的任何值?换句话说,将所有数据发送到/ dev/null?

c++ iterator stl

20
推荐指数
2
解决办法
1498
查看次数

__iter__如何工作?

尽管阅读了它,我仍然不太明白它是如何__iter__工作的.什么是简单的解释?

我见过def__iter__(self): return self.我不知道这是如何工作的或步骤如何工作.

python iterator

20
推荐指数
3
解决办法
1万
查看次数

调整向量大小会使迭代器无效吗?

我发现这个C++代码:

vector<int> a;
a.push_back(1);
a.push_back(2);
vector<int>::iterator it = a.begin();
a.push_back(4);
cout << *it;
Run Code Online (Sandbox Code Playgroud)

打印一些大的随机数; 但如果你a.push_back(3)在第3行和第4行之间添加,它将打印1.你能解释一下吗?

c++ iterator vector

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

Java:为什么不能遍历迭代器?

我读了为什么Java的迭代器不是Iterable?为什么不枚举可迭代?,但我仍然不明白为什么这样:

void foo(Iterator<X> it) {
  for (X x : it) {
    bar(x);
    baz(x);
  }
}
Run Code Online (Sandbox Code Playgroud)

没有成功.换句话说,除非我遗漏了某些东西,否则上面可能是一个很好的有效语法糖:

void foo(Iterator<X> it) {
  for (X x; it.hasNext();) {
    x = it.next();
    bar(x);
    baz(x);
  }
}
Run Code Online (Sandbox Code Playgroud)

java iterator iterable

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

如何同时迭代两个文件中的行?

我有两个文件,我想在它们两个上执行一些按行操作.(换句话说,每个文件的第一行与第二行相对应,等等.)现在,我可以想到一些稍微麻烦的方法来同时迭代这两个文件; 然而,这是Python,所以我想有一些句法简写.

换句话说,是否有一些简单的方法来适应

for line in file:
Run Code Online (Sandbox Code Playgroud)

这样它可以同时从两个文件中提取数据?

python iterator

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

使用Struts 2迭代HashMap <String,ArrayList <String >>

我目前在Struts2和s:iterate标签方面遇到了一些困难.

我想显示一个标签,它是HashMap中的关键字,后面跟着一个表(HashMap中的值),其中包含了对于HashMap中每个元素的ArrayList中的每个元素.

例如,

     label
  ----------
  | test1  |
  ----------
  | test2  |
  ----------



    label2
  ----------
  | test1  |
  ----------
  | test2  |
  ----------
Run Code Online (Sandbox Code Playgroud)

我看了很多关于HashMap的例子,但没有找到我的案例.

我怎样才能做到这一点 ?

谢谢,

java iterator struts2

20
推荐指数
1
解决办法
3万
查看次数

编写一个使多个容器看起来像一个的迭代器

考虑以下简化示例和所需输出:

class A
{
    class combined_iterator
    {
        ????
    }
    typedef ??? t_combined_it;

    t_combined_it begin();
    t_combined_it end();

    std::vector<int> m_Vec1, m_Vect2;
}

A a;
a.m_Vec1.push_back(1);
a.m_Vec2.push_back(2);
for (A::t_combined_it it = a.begin() ; it != a.end() ; it++) {
     std::cout << *it << " ";
}
Run Code Online (Sandbox Code Playgroud)

输出:

1 2 
Run Code Online (Sandbox Code Playgroud)

我认为问题很清楚:我如何编写一个迭代器,使它看起来好像两个或多个其他迭代器实际上只是一个序列.因此,在示例中,我可以使用迭代器,而不是迭代m_Vec1和m_Vec2,迭代器首先迭代m_Vec1和m_Vec2的元素.

我发现以下问题我认为是相同的:创建一个遍历2个容器的c ++迭代器.这个问题没有好的答案; 原始提问者提出的解决方案似乎很复杂,而且(相对)内存密集型.

我通过将std :: vector :: iterator保持为我的自定义迭代器的成员,并将其与迭代的每个序列的.end()迭代器进行比较,尝试了一种天真的方法; 然而,似乎比较来自不同容器的迭代器是非法的(我希望它们只是为了返回'不相等' - 也许这是找到这个问题的解决方案的方向?我想不出如何但是要实现它.

在可能的情况下,如果相关,我想使用boost :: iterators,因为我在别处使用它们,我喜欢它为我的迭代器实现提供的同质性; 但是当然如果有人在不使用它们的情况下有想法,我可以自己动手,所以在这个意义上它们不是必需的.

c++ boost iterator

20
推荐指数
2
解决办法
5229
查看次数

如何检查迭代器是否已初始化?

如果我为迭代器使用默认构造函数,如何检查它是否稍后分配?

对于指针,我可以这样做:

int *p = NULL;
/// some code
if ( NULL == p ) {
  // do stuff
}
Run Code Online (Sandbox Code Playgroud)

如何为迭代器执行上述操作?有可能吗?

#include <iostream>
#include <list>

int main ()
{
    std::list<int>::iterator it;

  if ( NULL == it ) // this fails
  {
      std::cout<<"do stuff" << std::endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

c++ iterator

20
推荐指数
1
解决办法
3万
查看次数

何时使用或不使用django ORM中的iterator()

这是来自queryset iterator()方法django文档:

QuerySet通常在内部缓存其结果,以便重复的计算不会导致其他查询.相反,iterator()将直接读取结果,而不在QuerySet级别执行任何缓存(在内部,默认迭代器调用iterator()并缓存返回值).对于返回大量只需要访问一次的大量对象的QuerySet,这可以带来更好的性能并显着降低内存.

阅读之后,我仍然感到困惑:关于性能提升和内存减少的一线表明我们应该使用这种iterator()方法.有人可以提供一些好的和坏的案例iterator()使用的例子吗?

即使查询结果没有被缓存,如果他们真的想多次访问模型,有人只能做以下事情吗?

saved_queries = list(Model.objects.all().iterator())
Run Code Online (Sandbox Code Playgroud)

python django orm iterator django-queryset

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

将vector <T> :: iterator与vector <T> :: reverse_iterator进行比较

我正在进行一个练习,我有一个向量,我正在编写自己的反向算法,使用反向和正常(向前)迭代器来反转向量的内容.但是,我无法比较迭代器.

int vals[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
vector<int> numbers(vals, vals + 10);

vector<int>::iterator       start = numbers.begin();
vector<int>::reverse_iterator end = numbers.rend();
Run Code Online (Sandbox Code Playgroud)

我有一个先前的算法,通过使用两个迭代器来反转向量,但是在这个任务中,我无法使用它们之间的!=运算符来比较它们.我的猜测是在向量中获取基础指针或索引,但我如何得到指针/索引?

c++ iterator stl vector

20
推荐指数
2
解决办法
7354
查看次数

标签 统计

iterator ×10

c++ ×5

python ×3

java ×2

stl ×2

vector ×2

boost ×1

django ×1

django-queryset ×1

iterable ×1

orm ×1

struts2 ×1