当前位置: 首页 > 面试题库 >

C ++(stl)与Java中的迭代器在概念上有区别吗?

宇文元明
2023-03-14
问题内容

在离开了一段时间并尝试清除旧瓜后,我将返回c ++。

在Java迭代器是一个具有方法容器的接口:hasNext()next()remove()hasNext()手段的存在 具有对
被越过的容器 的限制的概念

//with an Iterator
Iterator<String> iter = trees.iterator();
while (iter.hasNext()) 
{
    System.out.println(iter.next());
}

在C ++标准模板库中,迭代器似乎表示支持的数据类型或类operator++operator==没有 内置 限制的概念,
因此在进行下一个项目之前需要进行比较。在正常情况下,第二个迭代器是容器端,用户必须比较两个迭代器来检查限制。

vector<int> vec;
vector<int>::iterator iter;

// Add some elements to vector
v.push_back(1);
v.push_back(4);
v.push_back(8);

for (iter= v.begin(); iter != v.end(); iter++)
{
    cout << *i << " "; //Should output 1 4 8
}

有趣的是,在C ++中,指针是数组的迭代器。STL吸收了现有内容并围绕其建立约定。

我还缺少进一步的微妙之处吗?


问题答案:

是的,在概念上有很大的不同。C
++使用了不同的迭代器“类”。有些用于随机访问(不同于Java),有些用于前向访问(类似于Java)。尽管其他人也用于写数据(例如与一起使用transform)。

请参阅C ++文档中的迭代器概念:

  • 输入迭代器
  • 输出迭代器
  • 正向迭代器
  • 双向迭代器
  • 随机访问迭代器

与Java / C#的微不足道的迭代器相比,它们更加有趣和强大。希望这些约定将使用C ++
0x的Concepts进行整理。



 类似资料:
  • 本文向大家介绍Java中Iterator(迭代器) 与Collection(集合)用法与区别,包括了Java中Iterator(迭代器) 与Collection(集合)用法与区别的使用技巧和注意事项,需要的朋友参考一下 迭代器(Iterator) 它在Collection Framework中使用,以便在需要时检索元素。 它可以与“next”函数一起使用,以移动和访问下一个元素。“remove”函

  • 本文向大家介绍浅谈c++ stl迭代器失效的问题,包括了浅谈c++ stl迭代器失效的问题的使用技巧和注意事项,需要的朋友参考一下 之前看《C++ Primier》的时候,也解到在顺序型窗口里insert/erase会涉及到迭代器失效的问题,并没有深究。今天写程序的时候遇到了这个问题。 1 莫名其妙的Erase 最初我的程序是酱紫的,别说话,我知道这样是有问题的,可这样是最直观的想法 没错,程序崩

  • 本文向大家介绍一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念,包括了一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念的使用技巧和注意事项,需要的朋友参考一下 前言 在Python中可迭代(Iterable)、迭代器(Iterator)和生成器(Gener

  • 本文向大家介绍Java中的迭代器和枚举之间的区别,包括了Java中的迭代器和枚举之间的区别的使用技巧和注意事项,需要的朋友参考一下 Iterator和Enumeration都是游标,用于遍历和访问集合中的元素。它们都属于收集框架。在收集框架的JDK1.0和JDK.1.2版本的Iterator中添加了枚举。  枚举不能对集合进行结构更改,因为它对集合中的元素具有只读访问权限。它具有以下方法: * h

  • 这可能是一个基本问题,但是有人能解释一下和之间的主要区别并给出一些例子吗?

  • 问题内容: 这两个接口之间的确切区别是什么?是否有过使用效益?如果有人可以详细说明,将不胜感激。 问题答案: 查看该接口的Java API规范,对以下两者之间的区别进行了说明: 迭代器与枚举有以下两种不同: 迭代器允许调用者在迭代期间使用定义明确的语义从基础集合中删除元素。 方法名称已得到改进。 底线是,既和会给连续元素,但以这样的方式得到改善,从而该方法名是短,并且具有附加的方法。这是一个并排比