Estoy usando la biblioteca de vectores C# using System.Numerics; Necesito convertir la lista en un vector
He intentado implícita y explícitamente convertir el tipo pero no tiene compatibilidad incorporada. He leído la documentación buscando un método que pueda hacer esta conversión, pero no encontré ninguno adecuado.
Sé que podría lograr esta conversión usando un ciclo for simple, pero hacer esta conversión muchas veces dentro de mi programa parece terriblemente ineficiente y me pregunto si alguien conoce una mejor manera de obtener el mismo resultado.
Vector<T> tiene un constructor que toma un Span<T> y CollectionsMarshal.AsSpan le permite obtener un Span<T> de una List<T> .
P.ej:
var list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 }; var vector = new Vector<int>(CollectionsMarshal.AsSpan(list)); Esto da como resultado una única copia de memoria del contenido de la matriz que respalda a List<T> , a la memoria que respalda a Vector<T> .
Preste atención a las advertencias en los documentos para CollectionsMarshal.AsSpan : devuelve una referencia a la matriz que actualmente respalda List<T> , pero eso cambiará si la lista se actualiza. Sin embargo, solo para tomar una instantánea para copiar en un Vector<T> , está bien.