/// <summary> /// Converts std::vector to managed array /// </summary> /// <returns></returns> public KeyPoint[][] ToArray() { int size1 = Size1; if (size1 == 0) { return(new KeyPoint[0][]); } long[] size2 = Size2; var ret = new KeyPoint[size1][]; for (int i = 0; i < size1; i++) { ret[i] = new KeyPoint[size2[i]]; } using (var retPtr = new ArrayAddress2 <KeyPoint>(ret)) { NativeMethods.vector_vector_KeyPoint_copy(ptr, retPtr); } return(ret); }
/// <summary> /// Converts std::vector to managed array /// </summary> /// <returns></returns> public KeyPoint[][] ToArray() { var size1 = GetSize1(); if (size1 == 0) { return(Array.Empty <KeyPoint[]>()); } var size2 = GetSize2(); var ret = new KeyPoint[size1][]; for (var i = 0; i < size1; i++) { ret[i] = new KeyPoint[size2[i]]; } using (var retPtr = new ArrayAddress2 <KeyPoint>(ret)) { NativeMethods.vector_vector_KeyPoint_copy(ptr, retPtr.GetPointer()); GC.KeepAlive(this); } return(ret); }