如何修改矢量的各个元素
本文关键字:元素 何修改 修改 | 更新日期: 2023-09-27 18:29:18
我想读取和写入VectorOfFloat
的各个元素。问题是没有定义setter,这使得括号+索引访问元素的方式是只读的。
VectorOfFloat vector = new VectorOfFloat(5);
// vector[2] = 2.5F; // does not work
有一个变通办法:
- 用
ToArray()
转换为数组 - 根据需要修改阵列
- 使用
Clear()
和Push()
写回阵列
float[] array = vector.ToArray();
array[2] = 2.5F;
vector.Clear();
vector.Push(array); // does work but is retarded
Console.WriteLine(vector[2]);
只写一个元素似乎很麻烦。有更直接的方法吗此外,如果我能解决这个缺失的二传手,它值多少钱?
注释是正确的。访问非托管数组的方法是通过返回IntPtr
的StartAddress
属性。
lock(vector)
{
var ptr_array=(float*)vector.StartAddress.ToPointer();
ptr_array[4]=1.0f;
}