【C#】 3. Vector数据类型(包含运算符重写)
来源:互联网 发布:js根据时间戳获取日期 编辑:程序博客网 时间:2024/06/06 08:13
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection.Emit;using System.Reflection;namespace UserDefinedDataEXP{ class Vector<T>:Array<T> { // Constructor with start-index is 1 and length is 15. public Vector(): base() { } // Constructor with length parameter public Vector(int length) : base(length) { } // Constructor with length and start-index parameter. public Vector(int length, int minIndex) : base(length, minIndex) { } // Constructor with length, start-index and initial value parameters. public Vector(int length, int minIndex, T initvalue) : base(length, minIndex, initvalue) { } #region ADD OPERATION //委托BinaryOperatorT<T, T, T> addTT private static BinaryOperatorT<T, T, T> addTT; //加号实现1:Vector<T> v1,Vector<T> v2 public static Vector<T> operator +(Vector<T> v1,Vector<T> v2) { Vector<T> result = new Vector<T>(v1.Length, v1.MinIndex); int delta = v1.MinIndex - v2.MinIndex; if (addTT == null) { addTT = new BinaryOperatorT<T, T, T> (GenericOperatorFactory<T, T, T, Vector<T>>.Add); } for (int i = v1.MinIndex; i <= v1.MaxIndex; i++) { result[i] = addTT(v1[i], v2[(i - delta)]); } return result; } //加号实现2:Vector<T> v1, T v2 public static Vector<T> operator +(Vector<T> v1, T v2) { Vector<T> result = new Vector<T>(v1.Length, v1.MinIndex); if (addTT == null) { addTT = new BinaryOperatorT<T, T, T>(GenericOperatorFactory<T, T, T, Vector<T>>.Add); } for (int i = v1.MinIndex; i <= v1.MaxIndex; i++) { result[i] = addTT(v1[i], v2); } return result; } //加号实现3:T v1, Vector<T> v2 public static Vector<T> operator +(T v1, Vector<T> v2) { Vector<T> result = new Vector<T>(v2.Length, v2.MinIndex); if (addTT == null) { addTT = new BinaryOperatorT<T, T, T>(GenericOperatorFactory<T, T, T, Vector<T>>.Add); } for (int i = v2.MinIndex; i <= v2.MaxIndex; i++) { result[i] = addTT(v2[i], v1); } return result; } #endregion #region SUBTRACTION OPERATION //委托BinaryOperatorT<T, T, T> subTT private static BinaryOperatorT<T, T, T> subTT; //减号实现1:Vector<T> v1,Vector<T> v2 public static Vector<T> operator -(Vector<T> v1, Vector<T> v2) { Vector<T> result = new Vector<T>(v1.Length, v1.MinIndex); int delta = v1.MinIndex - v2.MinIndex; if (subTT == null) { subTT = new BinaryOperatorT<T, T, T> (GenericOperatorFactory<T, T, T, Vector<T>>.Subtract); } for (int i = v1.MinIndex; i <= v1.MaxIndex; i++) { result[i] = subTT(v1[i], v2[(i - delta)]); } return result; } //减号实现2:Vector<T> v1, T v2 public static Vector<T> operator -(Vector<T> v1, T v2) { Vector<T> result = new Vector<T>(v1.Length, v1.MinIndex); if (subTT == null) { subTT = new BinaryOperatorT<T, T, T>(GenericOperatorFactory<T, T, T, Vector<T>>.Subtract); } for (int i = v1.MinIndex; i <= v1.MaxIndex; i++) { result[i] = subTT(v1[i], v2); } return result; } #endregion #region MULPLICATION OPERATION //委托BinaryOperatorT<T, T, T> mulTT private static BinaryOperatorT<T, T, T> mulTT; //乘法实现1:Vector<T> v1, T v2 public static Vector<T> operator *(Vector<T> v1, T v2) { Vector<T> result = new Vector<T>(v1.Length, v1.MinIndex); if (mulTT == null) { mulTT = new BinaryOperatorT<T, T, T>(GenericOperatorFactory<T, T, T, Vector<T>>.Multiply); } for (int i = v1.MinIndex; i <= v1.MaxIndex; i++) { result[i] = mulTT(v1[i], v2); } return result; } //乘法实现2:T v1, Vector<T> v2 public static Vector<T> operator *(T v1, Vector<T> v2) { Vector<T> result = new Vector<T>(v2.Length, v2.MinIndex); if (mulTT == null) { mulTT = new BinaryOperatorT<T, T, T>(GenericOperatorFactory<T, T, T, Vector<T>>.Multiply); } for (int i = v2.MinIndex; i <= v2.MaxIndex; i++) { result[i] = mulTT(v1, v2[i]); } return result; } #endregion }}
</pre><pre name="code" class="csharp">
</pre><pre name="code" class="csharp">
</pre><pre name="code" class="csharp">
class test { static void Main(string[] args) { // Vectors and numeric matrices int J = 10; int sIndex = 1; // Size, start index and element values Vector<double> a = new Vector<double>(J, sIndex, 3.0); Vector<double> b = new Vector<double>(J, sIndex, 2.0); Vector<double> c = new Vector<double>(J, sIndex); c = a + b; c.print(); c = c + 4.0; c.print(); c = -4.0 + c; c.print(); c = a - b; c.print(); c = c * 2.0; c.print(); c = 0.5 * c; c.print(); Console.Read(); }
0 0
- 【C#】 3. Vector数据类型(包含运算符重写)
- c 数据类型 运算符 表达式
- C++:运算符重载、string类重写、数据类型转换、->操作符重载、virtual继承、virtual函数、typeid
- C++:运算符重载、string类重写、数据类型转换、->操作符重载、virtual继承、virtual函数、typeid
- c学习笔记(三)C数据类型与运算符
- C语言基础教程(二)数据类型、变量和运算符
- C语言:(一)数据类型、运算符和表达式
- C++Primer笔记(包含string、vector和数组指针)
- 数据类型长度运算符c语言中的
- C语言数据类型及运算符
- C语言(三),数据类型,运算符
- [Objective-C]简介、数据类型、NSLog、运算符
- C的数据类型、常量变量、运算符
- c语言数据类型、运算符、表达式
- C语言:数据类型、运算符和表达式
- C语言数据类型、运算符与表达式
- C语言数据类型,运算符与表达式
- C语言数据类型和运算符
- eclipse快捷键
- Apache修改web根目录
- poj1087 floyd+二分图最大匹配
- 拜拜了,浮动布局-基于display:inline-block的列表布局
- Cocos2d-x中的核心类简介
- 【C#】 3. Vector数据类型(包含运算符重写)
- python2 python3 部分区别
- iOS 指纹识别TouID 跳转页面问题
- 第18周项目1-动态链表体验(2查找结点)
- projspider.com-程序猿找私活神器
- jira 6.3.11和tomcat8不兼容
- Unity3D学习笔记之五为Prefab添加材质
- 共享内存原理
- 常见的jsp指令 及指令的属性