C++(stl)与Java中的迭代器,在概念上有区别吗?
在离开一段时间并试图除去旧甜瓜之后,我将回到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采用了现有的东西,并围绕它建立了惯例。
我错过了什么更微妙的地方吗?