标签: iterator

如何从最后一个迭代到第一个ArrayList?

我想知道是否有可能从最后一个迭代到ArrayList中的第一个元素,如果是这样的话怎么样?原因是因为我需要删除添加到列表中的最后一个元素

java iteration iterator

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

std :: map :: begin()之前的STL迭代器

在C++ 11中std::map,是否有一些有效的迭代器x使得++ x保证相等map::begin()?我想检测一下我刚刚调用的函数(我的)是否已经从函数前面走了一个迭代器.该函数将迭代器向后移动一个位置.

答案是否适用于图书馆的其他部分?

c++ iterator stl c++11 reverse-iterator

7
推荐指数
2
解决办法
6663
查看次数

Python:分配"通过"迭代器

我有一个可变序列的迭代器,例如

foo = [1,2,3,4,5]
for bar in foo:
Run Code Online (Sandbox Code Playgroud)

有没有办法通过使用迭代器中包含的引用来写入foo中的元素?天真的任务:

   bar = 42
Run Code Online (Sandbox Code Playgroud)

当然不起作用.是否可以使用"幕后"引用迭代器中的序列元素?

PS:使用索引的简单解决方案

for i in range(len(a)):
   a[i] = 42
Run Code Online (Sandbox Code Playgroud)

不适用于我的情况,因为我无法公开容器名称.

python iterator reference variable-assignment

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

ListIterator以前的方法不起作用

package wrap;
import java.util.*;
public class ArrayListDemo {

    public static void main(String [] args){
        ArrayList<String> a=new ArrayList<String>();
        a.add("B");
        a.add("C");
        a.add("D");
        ListIterator<String> i=a.listIterator();
        while(i.hasPrevious()){
            System.out.println(i.previous());
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

该程序适用于hasNext()和next()方法,但对于hasPrevious()和previous(),它显示如下消息::

<terminated> ArrayListDemo [Java Application] C:\Program Files (x86)\Java\jre7\bin\javaw.exe (28-Oct-2013 3:20:35 PM)
Run Code Online (Sandbox Code Playgroud)

java iterator listiterator

7
推荐指数
2
解决办法
9651
查看次数

强制foreach使用const迭代器

我有一个实现cbegin()cend()功能的自定义容器类.然后我在foreach循环中使用它,但它似乎需要begin()end()成员函数,即使我尝试使用const修饰符:

for (const auto val: container)
Run Code Online (Sandbox Code Playgroud)

和这样:

for (auto const val: container)
Run Code Online (Sandbox Code Playgroud)

和这样:

for (const auto const val: container)
Run Code Online (Sandbox Code Playgroud)

是否有可能强迫foreach使用常数c函数?

c++ containers iterator c++11

7
推荐指数
2
解决办法
1548
查看次数

具有代理迭代器/引用和auto的容器

我执行与代理迭代器/引用类型的容器类似,以std::vector<bool>和冲突到了以下问题,我着手进行例举std::vector<bool>(这个问题不是std::vector<bool>!):

#include <vector>
#include <type_traits>
int main() {
  using namespace std;
  vector<bool> vec = {true, false, true, false};
  auto value = vec[2];  // expect: "vector<bool>::value_type"
  const auto& reference = vec[2]; // expect: "vector<bool>::const_reference"

  static_assert(is_same<decltype(value), vector<bool>::value_type>::value, 
                "fails: type is vector<bool>::reference!");
  static_assert(is_same<decltype(reference), 
                        vector<bool>::const_reference>::value,
                "fails: type is const vector<bool>::reference&!"); 

  /// Consequence:
  auto other_value = value; 
  other_value = false; 
  assert(vec[2] == true && "fails: assignment modified the vector");
Run Code Online (Sandbox Code Playgroud)
  • 有没有办法实现代理类型,以便静态断言传递?

  • 在实现这样的容器时,是否有关于如何处理此问题的指导原则?

也许通过使用转换运算符来auto/ auto&/ auto&& …

c++ iterator generic-programming c++11 c++14

7
推荐指数
2
解决办法
2173
查看次数

未经检查的转化

我不想压制警告.还有另一种处理此警告的方法吗?

"Iterator类型的表达式需要未经检查的转换以符合Iterator"

Iterator<String> it = schemaJSON.getJSONObject("body").keys();
Run Code Online (Sandbox Code Playgroud)

java android json iterator

7
推荐指数
2
解决办法
8461
查看次数

通过Java中的ArrayLists的ArrayList进行迭代

我有以下ArrayList ...

ArrayList<ArrayList<Integer>> row1 = new ArrayList<ArrayList<Integer>>();
Run Code Online (Sandbox Code Playgroud)

添加了以下arraylists ....

row1.add(cell1);
row1.add(cell2);
row1.add(cell3);
row1.add(cell4);
row1.add(totalStockCell);
Run Code Online (Sandbox Code Playgroud)

我想遍历arraylist row1并打印内容.

循环中的循环会在这里工作吗?

例如

while(it.hasNext()) {

//loop on entire list of arraylists
    while(it2.hasNext) {
      //each cell print values in list

          } }
Run Code Online (Sandbox Code Playgroud)

java iterator arraylist

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

C++迭代器是否包含对底层对象的引用?

我似乎无法找到关于迭代器是否保持它们迭代的底层对象的大量信息.

如果我创建一个迭代器,那么提供它的对象超出了范围,迭代器的存在是否会阻止它被破坏?

这是一个非常简单的例子,仅用于说明该场景:

// This class takes a copy of iterators to use them later
class Data {
  public:
    Data(std::vector<int>::iterator start, std::vector<int>::iterator end)
      : start(start),
        end(end)
    {}

    void show() {
      // Use this->start and this->end for some purpose
    }

  private:
    std::vector<int>::iterator start;
    std::vector<int>::iterator end;
};

Data test() {
  std::vector<int> v{1, 2, 3};
  Data d(v.begin(), v.end());
  d.show(); // this would be ok
  return d;
}

int main(void) {
  Data d = test();
  d.show();  // What happens here?
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,Data对象正在存储迭代器的副本,这对第一次 …

c++ iterator reference

7
推荐指数
1
解决办法
2166
查看次数

检测对象是否可重复迭代

是否obj == iter(obj)意味着obj不能重复迭代,反之亦然?我没有在文档中看到任何这样的措辞,但根据这个评论,标准库通过测试检查对象是否可重复迭代 :if iter(obj) is obj

@agf:Python标准库的某些部分依赖于规范的这一部分; 它们通过测试检测某些东西是否是迭代器/生成器if iter(obj) is obj:,因为真正的迭代器/生成器对象将__iter__定义为标识函数.如果测试为真,则转换为list允许重复迭代,否则,假设对象可重复迭代,并且可以按原样使用它.
- ShadowRanger 6月3日17:23

文档确实声明如果obj是迭代器,则需要iter(obj)返回obj.但我认为这并不足以得出结论,可以使用非重复可迭代对象来识别iter(obj) is obj.

python iterator python-3.x

7
推荐指数
1
解决办法
109
查看次数