3

64 ビット キーを使用してマップを実装する適切な方法を知る必要があります。それらにはそれほど多くのアイテムはありません。十分な大きさのアドレス空間を持つさまざまなものにキーのさまざまなビットを使用する必要があり、非常に高速である必要があるため、Stringキーはおそらく遅すぎます。これまでのところ、私は試しました:

import haxe.Int64;
import haxe.Unserializer;
import haxe.Serializer;

class Test {
    static function main () {

        var key:Int64 = 1 << 63 | 0x00000001;

        var omap:Map<Int64, String> = new Map<Int64, String>();
        omap.set(key, "test");

        var smap:Map<Int64, String> = Unserializer.run(Serializer.run(omap));

        var key2:Int64 = 1 << 63 | 0x00000001;
        trace(key+" "+smap.get(key2));
    }
}

http://try.haxe.org/#7CDb2

haxe.Int64オブジェクトインスタンスを作成するため、明らかに機能しません。cpp.Int64何らかの理由で cpp コードで 32 ビット整数にフォールバックし、何が間違っているのかわからないため、使用するとうまくいきます。どうすれば強制的に 64 ビットに「留まる」ことができますか、それとも別の方法で行う必要がありますか?

4

1 に答える 1