标签: iterator

为什么在java.util.Collection上有一个方法iterator()

为什么在接口java.util.Collection上定义了iterator()方法,它已经扩展了java.util.Iterable,它定义了这个方法.

我正在考虑某种向后兼容性或在集合级别上对方法编写一些JavaDoc的机会.

还有其他想法吗?

java collections iterator iterable

15
推荐指数
3
解决办法
658
查看次数

用一次迭代计算均值和方差

我有一个数字迭代器,例如一个文件对象:

f = open("datafile.dat")
Run Code Online (Sandbox Code Playgroud)

现在我想计算:

mean = get_mean(f)
sigma = get_sigma(f, mean)
Run Code Online (Sandbox Code Playgroud)

什么是最好的实施?假设文件很大,我想避免两次阅读.

python iterator

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

可以'iterator'类型只是子类'const_iterator'吗?

关于迭代器的另一个问题之后,我对自定义容器有一些疑问.在我的容器中,iterator是一个子类const_iterator,所以我从非const转换为const"免费".但这是允许的,还是有这样的设置有任何缺点或非工作方案?

c++ containers iterator casting

15
推荐指数
1
解决办法
3402
查看次数

在同一个类中实现Java Iterator和Iterable?

我正在尝试理解Java IteratorIterable接口

我正在写这门课

class MyClass implements Iterable<String> {
    public String[] a = null;
    public MyClass(String[] arr) {
        a = arr;    
    }

    public MyClassIterator iterator() {
        return new MyClassIterator(this);
    }

    public class MyClassIterator implements Iterator<String> {
        private MyClass myclass = null;
        private int count = 0;
        public MyClassIterator(MyClass m) {
            myclass = m;    
        }

        public boolean hasNext() {
            return count < myclass.a.length;
        }
        public String next() {
            int t = count;
            count++;
            return myclass.a[t];
        }

        public void remove() …
Run Code Online (Sandbox Code Playgroud)

java iterator iterable

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

如何获取std :: set的第一个元素

我是你们所有人,

我在我的软件中发现了一个奇怪的错误.

在我从一个std :: set中删除元素的while循环中,我希望始终采用第一个元素,直到容器为空:

std::set< int*> nodes;
// Fill nodes 
for (int i=0; i<10;i++)
   nodes.insert(new int);
//
while (!nodes.empty())
{
int* pivot  = (*nodes.begin());
// do some operation with pivot erasing some elements from nodes
}
Run Code Online (Sandbox Code Playgroud)

我发现以这种方式实现第一个元素适用于gcc但不适用于MSVC,它会在我尝试取消引用(*nodes.begin())迭代器的地方崩溃.

std :: set的两个实现是否有不同的表现?

我希望有一个没有实现差异的数据结构,是否可能?

可能我必须改变这种操作的数据结构

c++ iterator stl set

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

循环范围更快(C++ 11)

我有一些代码来迭代(多变量)数值范围:

#include <array>
#include <limits>
#include <iostream>
#include <iterator>

template <int N>
class NumericRange : public std::iterator<double, std::input_iterator_tag>
{
public:
  NumericRange() {
    _lower.fill(std::numeric_limits<double>::quiet_NaN());
    _upper.fill(std::numeric_limits<double>::quiet_NaN());
    _delta.fill(std::numeric_limits<double>::quiet_NaN());
  }
  NumericRange(const std::array<double, N> & lower, const std::array<double, N> & upper, const std::array<double, N> & delta):
    _lower(lower), _upper(upper), _delta(delta) {
    _state.fill(std::numeric_limits<double>::quiet_NaN());
  }

  const std::array<double, N> & get_state() const {
    return _state;
  }

  NumericRange<N> begin() const {
    NumericRange<N> result = *this;
    result.start();
    return result;
  }

  NumericRange<N> end() const {
    NumericRange<N> result = *this;
    result._state = _upper; …
Run Code Online (Sandbox Code Playgroud)

c++ optimization iterator c++11

15
推荐指数
1
解决办法
2233
查看次数

为什么我要使用itertools.islice而不是正常的列表切片?

在我看来,itertools模块中的许多功能都具有更容易的等价物.例如,据我所知,itertools.islice(range(10),2,5)做同样的事情range(10)[2:5],itertools.chain([1,2,3],[4,5,6])做同样的事情[1,2,3]+[4,5,6].主要文档页面提到了速度优势,但除此之外还有任何理由选择itertools吗?

python iterator list

15
推荐指数
2
解决办法
9152
查看次数

如何从stl数据结构中删除reverse_iterator?

由于某种原因,以下代码失败.您不能简单地使用其base()方法擦除reverse_iterator.

#include <set>
#include <iostream>

int main()
{
    std::set<int> setOfInts;
    setOfInts.insert(1);
    setOfInts.insert(2);
    setOfInts.insert(3);

    std::set<int>::reverse_iterator rev_iter = setOfInts.rbegin();
    std::set<int>::reverse_iterator nextRevIter = setOfInts.rbegin();
    ++nextIter;

    while ( rev_iter != setOfInts.rend())
    {
        // Find 3 and try to erase
        if (*rev_iter == 3)
        {
            // SEGFAULT HERE
            setOfInts.erase( rev_iter.base());
        }
        rev_iter = nextRevIter;
        ++nextRevIter;
    }

}
Run Code Online (Sandbox Code Playgroud)

如何正确地做上述事情?如果reverse_iterator对应于您想要擦除的内容,那么如何删除它?

注意,遗憾的是不会使用reverse_iterator.它想要真实的东西.

c++ iterator stl

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

如何在C++中通过其值类型来专门化Iterator?

可以通过它来专门化Iterator模板参数value_type吗?

我有一个功能与以下原型.

template<typename InputIterator>
void f(InputIterator first, InputIterator last);
Run Code Online (Sandbox Code Playgroud)

如果InputIterator::value_type是,我想特别处理SomeSpecificType.

c++ templates iterator template-specialization

14
推荐指数
2
解决办法
1902
查看次数

是否可以就地过滤矢量?

我想从a中删除一些元素Vec,但是vec.iter().filter().collect()使用借来的项创建一个新的向量.

我想在Vec没有额外内存分配的情况下改变原始内容(并将已删除元素的内存保留为向量的额外容量).

iterator rust

14
推荐指数
2
解决办法
1289
查看次数