為充分利用向量空間,克服“假溢出”現象的方法是:將向量空間想象為一個首尾相接的圓環,并稱這種向量為循環向量。存儲在其中的隊列稱為循環隊列(Circular Queue)。循環隊列是把順序隊列首尾相連,把存儲隊列元素的表從邏輯上看成一個環,成為循環隊列。
網上有很多關于循環隊列實現原理的文章,講解很詳細,但是大多均只支持單個元素push和pop,有C語言版的也有C++版的,純C語言版的有個問題就是對類型的處理都不是很好,經過查閱GitHub,發現有大牛基于std::array封裝了一個C++的模板類庫,唯一美中不足的地方有兩點:
-
這個庫基于std::array實現,是固定長度的,不能動態分配內存
-
這個庫在VS2015中編譯會出現問題,而在VS2017或更高版本的編譯器中編譯通過,如果要使用這個庫,必須得把VS升級到2017以上的版本
頭文件
#ifndef