많은 언어의 대기열 유형 (http://docs.oracle.com/javase/7/docs/api/java/util/Queue.html)이 있습니다. 대기열 유형을 구현하는 라이브러리 (첫 번째, 먼저 데이터 구조)를 찾을 수 없습니다. 대기열이 부족하여 나를 놀라게합니다. D가 대기열을 처리하는 다른 방법이 있습니까?대기열 유형 D?
나는이 유사 할 것이라고 기대하는 구문은 :
//To create
Queue!string queue = new Queue!string;
//To add
queue.add("value");
//To access
string value = queue.get; //will remove from queue
//or
foreach (string value; queue) {}
이는 D에서 수행 될 수 있는가? 아니면 직접 구현해야합니까?
또한 간단한 배열로 아주 간단하게 할 수 있습니다. 배열과 몇 가지 도우미 메서드를 사용하여 효율적으로 처리 할 수도 있습니다. 20 줄 미만의 코드. –
이것이 내가 필요한 것입니다. 전에는 라이브러리를 찾을 수 없었지만 라이브러리를 호출 할 수 있는지 확실하지 않았습니다. @ AdamD.Ruppe 그렇습니다.하지만해야 할 일이 있지만 적은 메모리 재 할당으로 더 좋은 방법이 될 것이라고 확신했습니다. 낮은 수준의 대기열이 어떻게 구현되었는지는 실제로 알지 못했습니다. 이중 링크 목록! (https://en.wikipedia.org/wiki/Doubly_linked_list) –
내가하는 일은 순환 배열 (고정 크기 일 수도 있음)입니다. 'ubyte 시작, 끝 같이; T [256] 큐; void add_to_queue (T t) {큐 [end ++] = t; } T remove_from_queue() {대기열 반환 [시작 ++]; }'당신은 약간의 거친 가장자리를 깨끗하게 정리하고 싶을 것입니다. (시작 == 끝, 비어 있는지 확인하십시오.)하지만 실제로 많은 일에 대해 꽤 잘 작동하고, 정말 간단하며, 아무 것도 없습니다. 메모리 재 할당. –