我想阅读并写入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]);
修改阵列
这似乎是非常繁琐的只写一个元素有没有更直接的方法呢? 另外,如果我可以解决它,那么缺失的setter值多少?
我不知道这是否是_safe_(但从OpenCV的执行点),但你可能只是'浮* PTR =(浮动*)vector.StartAddress.ToPointer();'一个'unsafe'上下文中你也可以直接写'ptr [2] = 2.5f;'。 –
这似乎是一个非常尴尬的数据类型。为什么不使用std :: vector? –
GPPK
'VectorOfFloat'提供了一个名为'Ptr'的'IntPtr'属性。使用它可以访问不安全代码块中的'foat *'指针引用。 – ja72