如何修改矢量的各个元素

本文关键字:元素 何修改 修改 | 更新日期: 2023-09-27 18:29:18

我想读取和写入VectorOfFloat的各个元素。问题是没有定义setter,这使得括号+索引访问元素的方式是只读的。

VectorOfFloat vector = new VectorOfFloat(5);
// vector[2] = 2.5F; // does not work

有一个变通办法:

  1. ToArray()转换为数组
  2. 根据需要修改阵列
  3. 使用Clear()Push()写回阵列
float[] array = vector.ToArray();
array[2] = 2.5F;
vector.Clear();
vector.Push(array); // does work but is retarded
Console.WriteLine(vector[2]);

只写一个元素似乎很麻烦。有更直接的方法吗此外,如果我能解决这个缺失的二传手,它值多少钱?

如何修改矢量的各个元素

注释是正确的。访问非托管数组的方法是通过返回IntPtrStartAddress属性。

lock(vector) 
{
    var ptr_array=(float*)vector.StartAddress.ToPointer();
    ptr_array[4]=1.0f;    
}