文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在c++于java项目中自定义Troop<T>泛型类达到方法

2023-05-31 14:08

关注

这篇文章给大家介绍在c++于java项目中自定义Troop<T>泛型类达到方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Troop<T>是一个泛型列表操作类,适用于非高性能和非大数据量的要求。包括了:取值get,赋值set,追加append,插入insert,清除remove,进队enqueue,出队dequeue,交换swap,滚动roll,进栈push,出栈pop等日常操作。

//for more information, please access http://www.one-lab.netusing System;using System.Collections.Generic;using System.Text;namespace onelab{  public interface ISortable  {    void sort(bool decending);  }  public interface IStringable  {    int fromString(String input);    String toString();  }  public class Troop<T> : ICloneable  {    public override int GetHashCode()    {      return base.GetHashCode();    }    public override bool Equals(object obj) { return this == (Troop<T>)obj; }    public object Clone()    {      Troop<T> oValue = new Troop<T>();      oValue.cloneFrom(this);      return oValue;    }    protected bool equalsTo(Troop<T> aValue)    {      int len = aValue.length();      if (len == this.length())      {        for (int n = 0; n < len; n++)        {          if (!aValue.data[n].Equals(data[n]))            return false;        }        return true;      }      return false;    }    protected void cloneFrom(Troop<T> aValue)    {      data.Clear();      data.AddRange(aValue.data);    }    public static bool operator ==(Troop<T> a0, Troop<T> a1) { object o1 = (object)a0; object o2 = (object)a1; if (o1 == null && o2 == null) return true; return (o1 == null || o2 == null) &#63; false : a0.equalsTo(a1); }    public static bool operator !=(Troop<T> a0, Troop<T> a1) { object o1 = (object)a0; object o2 = (object)a1; if (o1 == null && o2 == null) return false; return (o1 == null || o2 == null) &#63; true : !a0.equalsTo(a1); }    private bool mHasError = false;    public bool hasError() { return mHasError; }    public List<T> data = new List<T>();    public T get(int index)    {      mHasError = false;      if (index >= 0 && index < data.Count)        return data[index];      mHasError = true;      return default(T);    }    public bool set(int index, T value)    {      if (index >= 0 && index < data.Count)      {        data[index] = value;        return true;      }      return false;    }    public void append(T value)    {      data.Add(value);    }    public bool insert(int index, T value)    {      if (index >= 0 && index < data.Count)      {        data.Insert(index, value);        return true;      }      return false;    }    public void appendRange(ref List<T> range)    {      data.AddRange(range);    }    public bool insertRange(int index, ref List<T> range)    {      if (index >= 0 && index < data.Count)      {        data.InsertRange(index, range);        return true;      }      return false;    }    public void clear()    {      data.Clear();    }    public bool remove(int index)    {      if (index >= 0 && index < data.Count)      {        data.RemoveAt(index);        return true;      }      return false;    }    public bool removeRange(int index, int count)    {      if (count > 0 && index >= 0 && ((index + count) <= data.Count))      {        data.RemoveRange(index, count);        return true;      }      return false;    }    public int length()    {      return data.Count;    }    public void enqueue(T value)    {      data.Insert(0, value);    }    public T dequeue()    {      mHasError = false;      int length = data.Count;      if (length > 0)      {        T b = data[length - 1];        data.RemoveAt(length - 1);        return b;      }      mHasError = true;      return default(T);    }    public void push(T value)    {      data.Add(value);    }    public T pop()    {      return dequeue();    }    public Troop<T> getRange(int index, int count)    {      Troop<T> output = new Troop<T>();      mHasError = true;      if (count > 0 && index >= 0 && ((index + count) <= data.Count))      {        output.data = data.GetRange(index, count);        mHasError = false;      }      return output;    }    public void reverse()    {      data.Reverse();    }    public bool swap(int index0, int index1)    {      int length = data.Count;      if (index0 >= 0 && index0 < length && index1 >= 0 && index1 < length)      {        T v = data[index0];        data[index0] = data[index1];        data[index1] = v;        return true;      }      return false;    }    public T take(int index)    {      mHasError = false;      if (index >= 0 && index < data.Count)      {        T v = data[index];        data.RemoveAt(index);        return v;      }      mHasError = true;      return default(T);    }    public void rollForward(int offset)    {      if (offset >= data.Count) return;      List<T> left = data.GetRange(offset - 1, data.Count - offset + 1);      List<T> right = data.GetRange(0, offset - 1);      data.Clear();      data.AddRange(left);      data.AddRange(right);    }    public void rollBackward(int offset)    {      if (offset >= data.Count) return;      List<T> left = data.GetRange(offset, data.Count - offset);      List<T> right = data.GetRange(0, offset);      data.Clear();      data.AddRange(left);      data.AddRange(right);    }  }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯