效果没有区别,但使用上区别很大。
使用迭代器调用Iteratoradd()、Iteratorremove()后,Iteratornext()还是指向原来的元素
而使用for(int i = 0; i< listsize(); i++)循环调用listadd(i, obj)后,下一个i指向的是新增的元素,而调用listremove(i),则下一个i会跳过一个元素。
因此大部分迭代的情况还是优先考虑使用迭代器。
c++list迭代器可以循环。根据查询相关资料得知,c++list迭代器只能用迭代器指针循环遍历。链表可迭代器访问,支持前向和反向迭代器,以便于适用于算法函数。为提高链表性能,减少频繁的新增和删除元素,内部使用两个链式结构。其中用于存储数据的链表,为双向链表,用于分配内存的链表为单向链表。所以c++list迭代器可以循环。
Iterator iterator = listiterator();
Object first = null;
Object last = null;
int count = 0;
while(iteratorhasNext()) {
count++;
Object temp = iteratornext();
if(count==1) {
first = temp;
}
else {
if(!iteratorhasNext()) {//最后一个元素
last = temp;
}
}
}
之后对first、last处理,之后的代码用户可根据自己的需求进行处理。
扩展资料:
迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。
Iterable:实现这个接口的集合对象支持迭代,是可以迭代的。实现了这个可以配合foreach使用
Iterator:迭代器,提供迭代机制的对象,具体如何迭代是这个Iterator接口规范的。
Iterator接口包含三个方法:hasNext,next,remove。
参考资料来源:百度百科-迭代器
以上就是关于迭代器ListIterator的add()方法与集合List的add()方法有什么不一样全部的内容,包括:迭代器ListIterator的add()方法与集合List的add()方法有什么不一样、c++list迭代器可以循环吗、用迭代器iterator遍历list中第一条数据和最后一条数据 并判断等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)