4

連想配列から an(y) 要素を削除して処理したいと思います。現在、RedBlackTreeと一緒に使用し.removeAny()ていますが、データを任意の順序にする必要はありません。AAで使用でき.byKey()ますが、常にすべてのキーを含む配列が生成されます。一度に 1 つだけ必要で、他のすべての要素を処理している間に AA を変更する可能性があります。データ構造全体を (内部的に) トラバースすることなく、正確に 1 つのキーを取得する他のスマートな方法はありますか?

4

1 に答える 1

2

を使用するのと同様に機能する回避策があります.byKeys()

auto anyKey(K, V)(inout ref V[K] aa)
{
    foreach (K k, ref inout(V) v; aa)
        return k;
    assert(0, "Associative array hasn't any keys.");
}

私のニーズでは、.byKeys().front十分に速いようです。回避策が実際に高速かどうかはわかりません。

于 2013-04-10T20:38:04.893 に答える