在离开一段时间并试图清除旧瓜后,我将返回 C++。
在 Java 中,Iterator 是具有以下方法的容器的接口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 采用现有的东西并围绕它建立约定。
我错过了任何进一步的微妙之处吗?