luaの配列(テーブル)に文字値が存在するかどうかを効率的に判断する
公開: 2016 年 6 月 28 日 - 火曜日04007までこのサイトの元の記事を転載する場合は、記事の出典を示してください: www.04007.cn
in_array; array_search など、PHP で配列を判断するときに非常に便利な関数呼び出しがあります。しかし、LUA では、これらのホイールを自分で構築する必要があります。http://www.jb51.net/article/65457.htm のように、インターネットにはいくつかの常識的な方法があります。
テーブルをループして、各値が探している値に対応するかどうかを判断します。コードは以下のように表示されます:
ただし、このメソッドは毎回ループする必要があります. その複雑さは O(n) であることがわかっています. クエリする文字列が多数ある場合、その効率の低さがより明白になります. 実際、lua のテーブル構造を使用して、この種のクエリを最適化することができます.lua のテーブルは効率的なテーブル構造です.PHP のハッシュテーブルを理解するのと同じです.O(1) のみなので、このように: 最初に検索対象のテーブルに対してキーと値のスワップ処理を実行します. その後、すべての検索がテーブルへのインデックスになります. インデックス値が nil の場合 (つまり、見つかった場合). コードは次のとおりです :
上記のコードの実行時間の統計結果は次のとおりです。複数のテストにより、後者の方法の効率がはるかに高いことが示されています。
---------- Luaの実行 ----------
cost time:0.005
cost time:0
出力完了(所要時間0秒) - 正常終了