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