Language agnostic 如何';迭代的东西叫什么?

Language agnostic 如何';迭代的东西叫什么?,language-agnostic,iterator,const-iterator,Language Agnostic,Iterator,Const Iterator,我想表示迭代器是常量(即不能递增或递减),但它产生的是非常量: iterator const it = foo.begin(); it++; // error *it = ...; // not an error 如果迭代器是指针,我可以说: 指针//迭代器 pointee//它产生的东西 但如果它不是指针,我不确定。我考虑使用container替换“pointee”,但迭代器根本不绑定到容器。例如,输入迭代器可以绑定到文件或STDIN。以下内容是否有效,是否被其他人使用 迭代器//迭代器 i

我想表示迭代器是常量(即不能递增或递减),但它产生的是非常量:

iterator const it = foo.begin();
it++; // error
*it = ...; // not an error
如果迭代器是指针,我可以说:

指针//迭代器

pointee//它产生的东西

但如果它不是指针,我不确定。我考虑使用
container
替换“pointee”,但迭代器根本不绑定到容器。例如,输入迭代器可以绑定到文件或STDIN。以下内容是否有效,是否被其他人使用

迭代器//迭代器

iteratoo//它产生的东西


我很高兴得到任何指导

因为我们在聊天中讨论了这一点,所以将其发布到这里

使用victor/victor设置

迭代器/迭代器

或者您可以使用Iteratee。

英语中的-和后缀用于表示“要操作的对象”,例如,《牛津英语词典》给出了“要乘以的对象”的被乘数示例,以及“要操作的对象”的操作数示例

那么对于“要迭代的对象”来说,iterand又如何呢?

这个“值”是否太明显(或错误)?毕竟,您想要从迭代器中得到的是值。如果你指的是你反复迭代的值集,那么我认为“序列”不是一个坏的选择。

< P>我会说“参考文献”,如果我说了很多,或者“迭代器指向的东西”,如果我只说一次,并且担心有人会认为我在谈论C++引用的混淆。
我还说指针的“refereand”(不是“pointee”)。如果人们没有意识到指针和迭代器是两种引用,尽管不是特定的C++引用,但它们总是可以被教育的。

< P>我不认为<强>迭代器< /强>的任何导数都是<强>迭代> <强> > <强> It>e>iterateeiterand或任何其他合适的方法。为什么?因为迭代器不会对它指向的对象做任何事情。其他答案所建议的词语暗示正在迭代iteratimiteratee等。但事实并非如此。它正被指向。指针指向被指针对象。迭代器不会迭代被迭代器


因此,我认为最好使用单词pointee

集合的元素,无论是否迭代,都是一个项。

我无法想象你描述的东西不是指针。你能举个例子吗?@Paul:你不能想象一个迭代器不是指针吗?C++中的一个实例:代码> OrthuryItRealths<代码>,它怎么可能是指针?或者,Java中
向量
上的迭代器可以是基于索引的,而不是使用优化的JNI指针。事实上,很少有迭代器类型可以真正成为指针,尽管在某些情况下,如果它们有指针数据成员而没有其他数据,你不会感到惊讶。我一直称它为迭代器对象,但现在你提到了它,我花了一些时间在谷歌上搜索这个术语,它似乎不正确。@Steve:据我的阅读,所描述的是一个不迭代的迭代器。i、 e.以某种方式指向集合的特定成员,并且不能修改为指向任何其他成员的对象。虽然我同意这实际上可能不是指针本身(在内存地址的意义上),而是包含指针数据成员的对象,或者索引该特定成员的其他方法;“这个东西的行为看起来很有趣。”保罗:在C++中,你不能增加一个特定对象的事实并不意味着你不能增加它的副本——迭代器有值语义,Johannes所说的常态是变量的属性,而不是变量保存的值的属性。代码>迭代器const it=foo.begin();it++/*错误*/;迭代器it2=it;it2++;/*好的,指向序列中的下一件事*/。我不认为
char*const
char*
更具意义,我也不认为
迭代器const
迭代器更具意义。FWIW,我的期望是“iterand”意味着容器/文件/流/正在迭代的任何东西,而不是它的特定成员,这是当前的焦点。尽管谷歌搜索表明我错了。德拉特。@Steve:True:我看到了可能的混乱,特别是考虑到我上面的措辞。