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()原理用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)