首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将浮点数数组的数组转换为UnsafeMutablePointer<UnsafeMutablePointer<Float>>

将浮点数数组的数组转换为UnsafeMutablePointer<UnsafeMutablePointer<Float>>
EN

Stack Overflow用户
提问于 2019-07-30 23:51:38
回答 1查看 178关注 0票数 0

我需要使用一个使用UnsafeMutablePointer<UnsafeMutablePointer<Float>?>!作为参数的函数。它是在Objective-C++的框架中编写的,我通过桥接头访问它:

代码语言:javascript
复制
- (void) applyFilters: (float *) input_image input_params: (long *) input_params output_image : (float *) output_image output_params : (long *) output_params filter_id : (int) filter_id args : (float**) args

我在理解args参数的结构时遇到了一些问题,这个参数是float**。在Swift中,它请求一个UnsafeMutablePointer<UnsafeMutablePointer<Float>>类型的参数,我猜它指向一个浮点数组的数组。

代码语言:javascript
复制
applyFilters(input_image: UnsafeMutablePointer<Float>!UnsafeMutablePointer<Float>!, input_params: UnsafeMutablePointer<Int>!, output_image: UnsafeMutablePointer<Float>!, output_params: UnsafeMutablePointer<Int>!, filter_id: Int32, args: UnsafeMutablePointer<UnsafeMutablePointer<Float>?>!)

如果我创建了一个由浮点数组成的数组,我如何使用UnsafeMutablePointer<UnsafeMutablePointer<Float>>指向它,以便将它传递给C++函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-31 23:07:56

我想出了怎么做:

代码语言:javascript
复制
func arrayOfArrayExample() {

    let floatArray: [[Float]] = [
        [50.0, 23.0, 15.6],
        [24.0, 9.5, 12.7]
    ]

    let size1 = floatArray.count
    let size2 = floatArray[0].count

    var vectorBuf : UnsafeMutablePointer<Float>?
    let bufferOut = UnsafeMutablePointer< UnsafeMutablePointer<Float>?>.allocate(capacity: Int(size1))

    for i in 0..<size1 {
        vectorBuf = UnsafeMutablePointer<Float>.allocate(capacity: size2)
        for j in 0..<size2 {
            vectorBuf!.advanced(by: j).pointee = floatArray[i][j]
        }
        bufferOut.advanced(by: i).pointee = vectorBuf
    }

    defer {
        //deallocating memory
        for i in 0..<size1 {
            bufferOut.advanced(by: i).deallocate()
        }
    }
}

变量bufferOut返回一个UnsafeMutablePointer<UnsafeMutablePointer<Float>>指针,该指针指向Float数组的数组,然后释放内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57275558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档