[计算机科学经

计算机科学经

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 後㆒個元素移除,並不傳回該元素。這種行為 乃是基於異常安全性(exception safety)考量。實現㆒個「移除最後元素並傳回,而且完全顧及 異常安全性」的 pop()是不可能的(這個問題最早由 Tom Cargill 在 [CargillExceptionSafety] ㆗ 討論過),[SutterExceptional] 條款 10 也有討論)。然而,如果拋開可能的危險,我們可以實 作出㆒個「移除最後元素並傳回」的 pop(),但必須宣告㆒個型別為 T 的區域變數: template <typename T> T Stack<T>::pop () { if (elems.empty()) { throw std::out_of_range("Stack<>::pop: empty stack"); } T elem = elems.back(); // 保存最後元素的拷貝 elems.pop_back(); // 移除最後㆒個元素 return elem; // 傳回先前保存的最後元素 } 當 vector 為空時,對它進行 back()或 pop_back()操作會導致未定義行為。所以我們必須在操 作前先檢查 stack 是否為空。如果 stack 為空,就拋出㆒個 std::out_of_range 異常。top()之 ㆗也需進行相同檢查;該函式傳回 stack 的最後㆒個元素,但不移除之: template <typename T> T Stack<T>::top...
View Full Document

This note was uploaded on 08/25/2012 for the course EECS 101 taught by Professor Wre during the Fall '12 term at Beacon FL.

Ask a homework question - tutors are online