許多語言都有隊列類型(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){queue [end ++] = t; } T remove_from_queue(){return queue [start ++]; }'你可能會想要清理那些粗糙的邊緣(比如可能檢查start == end,它是空的),但是這些代碼實際上對很多事情來說都很好,非常簡單,並且沒有內存重新分配。 –