Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 迭代与枚举_C++ - Fatal编程技术网

C++ 迭代与枚举

C++ 迭代与枚举,c++,C++,对于迭代,我知道有不同类型的迭代器,例如前向、双向、随机访问,可用于访问数组中的项 对于枚举,我只听说过可用于索引项的枚举。但是,有所谓的“枚举”或枚举数的术语吗?如果是这样的话,那么迭代和枚举之间有什么区别呢?这个术语实际上与语言有关,并且变得非常混乱 C++中的一个“枚举”​ion“(enum)是一个名称,意思是“一堆编号的项目”,因此没有任何操作进行;它只是一个东西(像类) 当然,“迭代​ion“指一个动作,意思是“重复一个动作多次”。通常,这是伴随着检查项目列表 但是,在某些语言中,每一

对于迭代,我知道有不同类型的迭代器,例如前向、双向、随机访问,可用于访问数组中的项


对于枚举,我只听说过可用于索引项的枚举。但是,有所谓的“枚举”或枚举数的术语吗?如果是这样的话,那么迭代和枚举之间有什么区别呢?

这个术语实际上与语言有关,并且变得非常混乱

C++中的一个“枚举”​ion“(
enum
)是一个名称,意思是“一堆编号的项目”,因此没有任何操作进行;它只是一个东西(像

当然,“迭代​ion“指一个动作,意思是“重复一个动作多次”。通常,这是伴随着检查项目列表

但是,在某些语言中,每一种行为都有其特定的含义:

    < > > P> C:枚举数是对象集合(如C++迭代器;<代码> IEnumerator < /C>)。迭代器是做几乎相同事情的方法,但采用协同程序风格(
    产生返回值

    C#仍然有枚举数​离子​S(<代码> EnUM <代码> s)类似于C++。

    java:迭代器像C++一样,通过集合的项进行。我不确定“统计员”

    Java仍然有枚举数​离子​s类似于C++,但它们也有一些不同。

  • Python:迭代器类似于C#枚举器;生成器就像C迭代器(
    yield

    无枚举数​离子​s、 阿法克


< P> >我不确定C++中是这样的,但是在java中枚举器本质上是更快的迭代器,因为它不是线程安全的,因此它不需要检查由迭代器完成的线程访问。
更多信息请参见此部分。

本质上,C++的SinglePassIterator、Java的Iterator和C#的IEnumerator都是等效的

AFAIK Java和C#不提供类似ForwardIterator的功能,可能是因为它们需要“可克隆”, 这对于虚拟机来说是一项繁重的操作。将新副本复制到数组和索引访问比迭代器快得多。

是一个java概念,允许您在范围/容器上进行迭代器。