我在使用 Swift 时遇到了一个小问题。
我正在将我的旧 C++ 代码移植到它,并且有几个地方我使用了二维数组。
Swift 代码现在看起来像:
var m_blocksSave:Array<Array<Int>>
var columns = 32
var rows = 32
//fill array with 0
for column in 0..<columns {
var columnArray = Array<Int>()
for row in 0..<rows {
columnArray.append(0)//default is 0
}
m_blocksSave.append(columnArray)
}
然后我想检查这个数组,例如找到 1。事实上,对数组项的任何访问都会造成巨大的减速。
例如,此代码在我的机器上最多可能需要 4 秒(无论环境如何,我都可以将 iOS 与模拟器一起使用或将其作为 native OS X 应用程序运行):
for var i=0;i<columns;i++
{
for var j=0;j<rows;j++
{
let intVariable = m_blocksSave[i][j]//this thing is slow
}
}
在这种情况下我能做什么,发生了什么事?为什么这么慢?
最佳答案
可以引用:Most efficient way to access multi-dimensional arrays in Swift? . 总而言之,现在二维数组不太好,你需要用一维数组构建自己的二维数组。
关于ios - 访问多维数组的项目缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840056/