Vector<T> 结构

定义

表示指定数值类型的单个向量,该向量适用于并行算法的低级别优化。

generic <typename T>
 where T : value classpublic value class Vector : IEquatable<System::Numerics::Vector<T>>, IFormattable
generic <typename T>
public value class Vector : IEquatable<System::Numerics::Vector<T>>, IFormattable
public struct Vector<T> : IEquatable<System.Numerics.Vector<T>>, IFormattable where T : struct
public readonly struct Vector<T> : IEquatable<System.Numerics.Vector<T>>, IFormattable where T : struct
public readonly struct Vector<T> : IEquatable<System.Numerics.Vector<T>>, IFormattable
type Vector<'T (requires 'T : struct)> = struct
    interface IFormattable
type Vector<'T> = struct
    interface IFormattable
Public Structure Vector(Of T)
Implements IEquatable(Of Vector(Of T)), IFormattable

类型参数

T

向量中的元素的类型。 T 可以是任何基元数值类型。

继承
Vector<T>
实现

注解

Vector<T> 是一个不可变结构,表示指定数值类型的单个向量。 Vector<T> 实例计数是固定的,但其上限取决于 CPU 寄存器。 它旨在用作向量大型算法的构建基块,因此不能直接用作任意长度向量或张量。

Vector<T> 结构为硬件加速提供支持。

本文中的术语 基元数值数据类型 是指 CPU 直接支持的数值数据类型,并具有可以操作这些数据类型的说明。

构造函数

Vector<T>(ReadOnlySpan<Byte>)

从给定的只读字节范围构造向量。

Vector<T>(ReadOnlySpan<T>)

从给定的 ReadOnlySpan<T>构造向量。

Vector<T>(Span<T>)

从给定的 Span<T>构造向量。

Vector<T>(T)

创建其组件属于指定类型的向量。

Vector<T>(T[])

从指定的数组创建矢量。

Vector<T>(T[], Int32)

从指定数组创建从指定索引位置开始的向量。

属性

AllBitsSet

获取一个新的 Vector<T>,所有位都设置为 1。

Count

返回矢量中存储的元素数。

Indices

获取一个新的 Vector<T>,其中元素设置为其索引。

IsSupported

获取一个值,该值指示是否支持 T

Item[Int32]

获取指定索引处的元素。

One

返回包含所有矢量的向量。

Zero

返回一个包含所有零的向量。

方法

CopyTo(Span<Byte>)

将向量复制到给定 Span<T>

CopyTo(Span<T>)

将向量复制到给定范围。 .

CopyTo(T[])

将向量实例复制到指定的目标数组。

CopyTo(T[], Int32)

将向量实例复制到从指定索引位置开始的指定目标数组。

Equals(Object)

返回一个值,该值指示此实例是否等于指定对象。

Equals(Vector<T>)

返回一个值,该值指示此实例是否等于指定的向量。

GetHashCode()

返回此实例的哈希代码。

ToString()

使用默认格式返回此矢量的字符串表示形式。

ToString(String)

返回此矢量的字符串表示形式,使用指定的格式字符串设置单个元素的格式。

ToString(String, IFormatProvider)

返回此矢量的字符串表示形式,使用指定的格式字符串来设置单个元素的格式,以及用于定义区域性特定的格式设置的指定格式提供程序。

TryCopyTo(Span<Byte>)

尝试将向量复制到给定字节范围。

TryCopyTo(Span<T>)

尝试将向量复制到给定 Span<T>

运算符

Addition(Vector<T>, Vector<T>)

将两个向量相加。

BitwiseAnd(Vector<T>, Vector<T>)

通过对两个向量中的每个元素执行按位 And 运算来返回新向量。

BitwiseOr(Vector<T>, Vector<T>)

通过对两个向量中的每个元素执行按位 Or 运算来返回新向量。

Division(Vector<T>, T)

将矢量除以标量以计算每个元素商。

Division(Vector<T>, Vector<T>)

将第一个向量除以第二个。

Equality(Vector<T>, Vector<T>)

返回一个值,该值指示两个指定向量中的每个元素对是否相等。

ExclusiveOr(Vector<T>, Vector<T>)

通过对两个向量中的每个元素执行按位 XOr 运算来返回新向量。

Explicit(Vector<T> to Vector<Byte>)

将指定向量的位重新解释为 Byte类型的向量。

Explicit(Vector<T> to Vector<Double>)

将指定向量的位重新解释为 Double类型的向量。

Explicit(Vector<T> to Vector<Int16>)

将指定向量的位重新解释为 Int16类型的向量。

Explicit(Vector<T> to Vector<Int32>)

将指定向量的位重新解释为 Int32类型的向量。

Explicit(Vector<T> to Vector<Int64>)

将指定向量的位重新解释为 Int64类型的向量。

Explicit(Vector<T> to Vector<IntPtr>)

将源向量位重新解释为本机大小的整数的向量。

Explicit(Vector<T> to Vector<SByte>)

将指定向量的位重新解释为 SByte类型的向量。

Explicit(Vector<T> to Vector<Single>)

将指定向量的位重新解释为 Single类型的向量。

Explicit(Vector<T> to Vector<UInt16>)

将指定向量的位重新解释为 UInt16类型的向量。

Explicit(Vector<T> to Vector<UInt32>)

将指定向量的位重新解释为 UInt32类型的向量。

Explicit(Vector<T> to Vector<UInt64>)

将指定向量的位重新解释为 UInt64类型的向量。

Explicit(Vector<T> to Vector<UIntPtr>)

将源向量位重新解释为本机大小的无符号整数的向量。

Inequality(Vector<T>, Vector<T>)

返回一个值,该值指示指定向量中的任何单个元素对是否相等。

LeftShift(Vector<T>, Int32)

将向量的每个元素左移指定量。

Multiply(T, Vector<T>)

将向量乘以指定的标量值。

Multiply(Vector<T>, T)

将向量乘以指定的标量值。

Multiply(Vector<T>, Vector<T>)

返回一个新向量,其值是两个指定向量中每个元素对的乘积。

OnesComplement(Vector<T>)

返回一个新向量,其元素是通过获取指定向量元素的补数获得的。

RightShift(Vector<T>, Int32)

按指定量向量向右移动 (signed) 的每个元素。

Subtraction(Vector<T>, Vector<T>)

从第一个向量中减去第二个向量。

UnaryNegation(Vector<T>)

否定给定向量。

UnaryPlus(Vector<T>)

返回给定向量不变。

UnsignedRightShift(Vector<T>, Int32)

按指定量向量向右移动(无符号)的每个元素。

扩展方法

As<TFrom,TTo>(Vector<TFrom>)

Vector<T> 重新解释为新的 Vector<T>

GetElement<T>(Vector<T>, Int32)

获取指定索引处的元素。

Store<T>(Vector<T>, T*)

将向量存储在给定的目标处。

StoreAligned<T>(Vector<T>, T*)

将矢量存储在给定的对齐目标处。

StoreAlignedNonTemporal<T>(Vector<T>, T*)

将矢量存储在给定的对齐目标处。

StoreUnsafe<T>(Vector<T>, T)

将向量存储在给定的目标处。

StoreUnsafe<T>(Vector<T>, T, UIntPtr)

将向量存储在给定的目标处。

ToScalar<T>(Vector<T>)

将给定向量转换为包含第一个元素值的标量。

WithElement<T>(Vector<T>, Int32, T)

创建一个新的 Vector<T>,该元素位于指定索引处设置为指定值,其余元素设置为与给定向量中的相同值。

AsVector128<T>(Vector<T>)

Vector<T> 重新解释为新的 Vector128<T>

AsVector256<T>(Vector<T>)

Vector<T> 重新解释为新的 Vector256<T>

AsVector512<T>(Vector<T>)

Vector<T> 重新解释为新的 Vector512<T>

适用于