2012-09-09 57 views
-2

我想從頭文件實現一個堆棧類。 我用3個文件stack.h,stack.cpp和main.cpp編寫了它。如何從C++頭文件實現:: find()和:: count()?

要找到一個元素,我在stack.cpp中使用下面的代碼。

bool stack::find (const string &elem) const 
{ 
    vector<string>::const_iterator it = _stack.begin(); 
    return ::find(it,_stack.end(),elem))!=_stack.end(); 
} 

但是,find始終一直返回false。我每次都會收到「找不到的單詞」。 你能幫我解決嗎?

下面是引擎收錄鏈接代碼:PasteBin Link

+0

我不確定返回中的括號是如何工作的,但比較應該在裏面。 – chris

+1

嗯,我可能會誤解這個問題,但std :: stack有什麼問題嗎? – Avi

+0

如何定義':: find'? – juanchopanza

回答

1

如果你正在做一個反覆的查找,堆棧是不是你要使用的數據結構。堆棧的要點是你必須彈出元素才能訪問它們。如果您正在瀏覽搜索中的所有元素,保留堆棧狀態的唯一方法是將所有元素保存在單獨的容器中,並在搜索完成後將它們推回堆棧。如果你這樣做,爲什麼不使用像std :: vector這樣的隨機訪問容器呢?

所以你的問題的答案是:不這樣做,我們是一個不同的容器。

+0

好的,謝謝。我正在學習實施課程,這是本書中的一個例子。除查找和計數外,它執行堆棧的所有操作。它是一個std :: vector 。 – Crocode

相關問題