加强型无穷集合:InfiniteList<T>

Posted 大胡子毛绒老头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加强型无穷集合:InfiniteList<T>相关的知识,希望对你有一定的参考价值。


   //有个 Step 属性用来指定遍历方向和偏移量,遍历期间被设置为 0 就终止遍历。
public class InfiniteList<T> : IEnumerable<T> { public List<T> Source { get; } int start { get; } public int Step { get; set; } = 1; public InfiniteList(IEnumerable<T> source) : this(0, source) { } public InfiniteList(int start, IEnumerable<T> source) { this.start = Math.Max(Math.Min(start, source.Count()), -1); Source = new List<T>(source); } public IEnumerator<T> GetEnumerator() { return new Enumerator(this); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } class Enumerator : IEnumerator<T> { InfiniteList<T> list; int index = -1; public Enumerator(InfiniteList<T> source) { this.list = source; index = source.start - source.Step; } public T Current { get { return list.Source[index]; } } object IEnumerator.Current { get { return Current; } } public void Dispose() { } public bool MoveNext() { if (list.Source.Count == 0) { return false; } if (list.Step == 0) { return false; } index += list.Step; while (index > list.Source.Count - 1) { index -= list.Source.Count; } while (index < 0) { index += list.Source.Count; } return true; } public void Reset() { index = list.start; } } }

 

以上是关于加强型无穷集合:InfiniteList<T>的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 std::complex<T> 创建复无穷大

Java基础加强——泛型

[luoguP1251] 餐巾计划问题(费用流)

java中数组集合字符串之间的转换,以及用加强for循环遍历

集合论:无穷集合及其基数

[bzoj4407] 于神之怒加强版