清空隊列的時候
為什么不需要將數組中的元素賦值為0來清空隊列中的元素,而僅僅是設置頭、尾、長度為0?
如果說清空后再插入隊列的新值會覆蓋舊值,那么考慮一種情況,假如一個隊列10個元素,全部填滿,然后按照視頻中的方法清空隊列,這時候,再次操作隊列,只插入5個元素,那是不是會出現讀取該隊列的時候該隊列依然是10個元素的情況呢?(5個新入隊的,5個舊值)
為什么不需要將數組中的元素賦值為0來清空隊列中的元素,而僅僅是設置頭、尾、長度為0?
如果說清空后再插入隊列的新值會覆蓋舊值,那么考慮一種情況,假如一個隊列10個元素,全部填滿,然后按照視頻中的方法清空隊列,這時候,再次操作隊列,只插入5個元素,那是不是會出現讀取該隊列的時候該隊列依然是10個元素的情況呢?(5個新入隊的,5個舊值)
2017-08-22
舉報
2017-08-22
僅僅將元素賦值為0,0也是一個int 數值占據內存空間,并未起到清空隊列的作用。
清空隊列的時候已經設置長度為零,再次插入數值的時候長度重新從零計數,插入5個長度增到5,不會出現再次讀取的時候長度還是10 的情況
2017-08-22
謝謝你!不過對于第二個問題,我的理解是,長度分為數組長度m_length和已經入隊的對象長度m_used兩種。事實上清零是將m_used清零,而m_length依然沒變,所以在我上面假設的情況下,倘若再讀取m[i],其中5<i<m_length,是會讀取到以前的舊值的。雖然說實際情況下i的上限是m_used-1,正常情況下不會讀取到后面的值,但是這樣清空數組會不會有些問題呢。(因為值并沒有被清空,還是存在堆內存里面)