如何通过迭代器来或得对应元素的下标

如何通过迭代器来或得对应元素的下标,第1张

auto iter = std::find_if(vecTitlebegin(), vecTitleend(), [&](const _tstring& title)

{

return iCells == title;

});

// iCells是外部引入

auto i = std::distance(vecTitlebegin(), iter); // 这个就是根据迭代器获取下标

iter为数组vecTitle的迭代器

hasNext。迭代器iterator是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。

如果使用 Iterator 来遍历集合中元素,一旦不再使用 List 转而使用 ‍TreeSet 来组织数据,那遍历元素的代码不用做任何修改,如果使用 for 来遍历,那所有遍历此集合的算法都得做相应调整。

比如以后你的代码改了,list不在是list接口了,而是set接口(没有get(i)方法),

这时你的代码改动就大了,for里面全部要重写,而你老大的代码几乎不用任何修改,当然这也牺牲了部分性能‍‍

参考资料:

>

这是foreach的

using System;

using SystemCollections;

namespace ConsoleApplication1

{

/// <summary>

/// Class1 的摘要说明。

/// </summary>

class Class1

{

/// <summary>

/// 应用程序的主入口点。

/// </summary>

[STAThread]

static void Main(string[] args)

{

//

// TODO: 在此处添加代码以启动应用程序

//

ArrayList arraylist = new ArrayList();

arraylistAdd("Hello");

arraylistAdd("World");

arraylistAdd("!");

foreach (string s in arraylist)

{

ConsoleWrite( "{0}\n", s );

}

}

}

}

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。

List 接口的大小可变数组的实现,位于API文档的javautilArrayList<E>。实现了所有可选列表 *** 作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来 *** 作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

size、isEmpty、get、set、iterator 和 listIterator *** 作都以固定时间运行。add *** 作以分摊的固定时间 运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有 *** 作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。

以上就是关于如何通过迭代器来或得对应元素的下标全部的内容,包括:如何通过迭代器来或得对应元素的下标、使用iterator时,判断是否存在下一个元素可以使用以下哪、Java iterator()和next()原理用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9341366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存