4
연관 배열에서 (y) 요소를 제거하고 처리하고 싶습니다. 지금 .removeAny()
과 함께 RedBlackTree
을 사용하고 있지만 데이터 순서가 필요하지는 않습니다. I 은 AA에서 .byKey()
을 사용할 수 있지만 항상 모든 키가있는 배열을 생성합니다. 한 번에 하나씩 만 필요하며 다른 모든 요소를 처리하는 동안 AA를 변경합니다. 전체 데이터 구조를 (내부적으로) 트래버스하지 않고 정확히 하나의 키를 얻는 다른 똑똑한 방법이 있습니까? 내 요구를 들어연관 배열에서 요소 제거
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
그래도 충분히 빠른 것 같다 :
byKey가 게으르지 않습니까? – dav1d
나는 그렇게 생각하지 않는다. http://github.com/D-Programming-Language/druntime/blob/master/src/rt/aaA.d#L519가 byKeys가 내부적으로 구현되는 방식이면 no입니다. –
흥미로운 새로운 AA 구현을위한 시간 (그것은 작동했지만 죽은 것 같습니다.) – dav1d