이상한 작은 일정 대기열이 필요한 통역사 같은 프로젝트를 구현하고 있습니다. 휠 재교육을 피하고 싶기 때문에 비슷한 구조 나 기존 작업에 대한 언급을 누군가에게 줄 수 있기를 바랍니다. 내가 따라갈 때 단순히 여러 개의 큐를 인스턴스화 할 수 있다는 것을 알고있다. 나는 단지 나보다 나은 아이디어를 가진 다른 사람들의 관점을 찾고있다.)나무와 같은 큐
나는 다음과 같이 동작 할 것이라고 상상한다. 단일 루트가있는 트리. 루트에 "insert_iterator"를 가져온 다음 요소를 그 위에 밀어 넣습니다 (예 : 아래 예의 a 및 b). 그러나 언제든지 반복기를 여러 개의 반복기로 분할하여 효과적으로 분기를 만들 수도 있습니다. 브랜치는 하나의 큐에 다시 병합 할 수는 없지만 빈 브랜치를 버려 질 때까지 (큐브의 앞부분에서 다시 "일종의"visitor_iterator를 사용하여) 터지는 요소를 시작할 수 있습니다.
x -> y -> z
a -> b -> { g -> h -> i -> j }
f -> b
아이디어가 있으십니까? 자신이 큐의 풀을 사용하지만 난 "처음 생각, 코드 나중에"전략 :
감사를 수행하고있어 구현하는 비교적 간단한 구조처럼 보인다
편집 :은 내가 몇 가지를 추가 할 줄 알았는데 추가 배경 정보. 문제와 관련이 없지만 내 목표를 조금 분명히하는 데 도움이 될 것이라고 생각했습니다. 매우 대략적으로이 구조의 개념은 기본적으로 계산을 예약하는 데 사용된다는 것입니다. 분기는 COMMIT 또는 ROLLBACK 중 하나로 끝날 수 있습니다. > ..., g - -> ... 또는 F - X의 경우라도> ... 그리고, COMMIT 만료
a -> b
커밋이 끝난 지점뿐만 아니라 순차적으로 실행된다. 예 :
x -> y -> z -> COMMIT
그러나, - 가지 중 하나 이상이 최선을 다하고 있습니다 때> B는 한 번만 실행됩니다. 세 개의 분기가 모두 ROLLBACK으로 끝나면 초기 이벤트 인 a -> b를 포함하여 전체 트리가 삭제됩니다.
지금까지 큰 답변 주셔서 감사합니다! 나는 집에 돌아 오자 마자 그들을 자세히 검토 할 것이다.
세 번째로 튀어 나오는 요소 : x, g 또는 f 또는 불확정성이 있습니까? x가 세 번째로 튀어 나왔다면 y는 의무적 인 네 번째가 될까요? – msw
b를 밀었 으면 "split"과 같은 것을 호출하여 세 개의 insert_iterator를 얻고 효과적으로 다음에 어느 것을 삽입할지 선택할 수 있습니다. 터지는 것과 동일합니다. 단, 얼마나 많은 방법으로 분할해야 하는지를 물어야합니다. –