我想知道如何獲得一堆特定值(/堆棧?對不起,我是法國人:P)。我必須將堆的頂點卸下,使其成爲一個整數並獲得堆的[頂點 - int]值,以便我可以將其作爲新的頂點。如何獲得一堆特定的價值? (C++)
感謝您的幫助:)
(下面是一個例子,將可能更清楚:
例如,具有樁[1 2 3 4 5 2](其中,峯會上右邊),指令將會彈出堆棧[1 2 3 4 5],然後複製值爲3的數值3,它是從右邊第二個數字開始,然後從0開始,然後堆疊它,最後一疊[1 2 3 4 5 3]。)
我想知道如何獲得一堆特定值(/堆棧?對不起,我是法國人:P)。我必須將堆的頂點卸下,使其成爲一個整數並獲得堆的[頂點 - int]值,以便我可以將其作爲新的頂點。如何獲得一堆特定的價值? (C++)
感謝您的幫助:)
(下面是一個例子,將可能更清楚:
例如,具有樁[1 2 3 4 5 2](其中,峯會上右邊),指令將會彈出堆棧[1 2 3 4 5],然後複製值爲3的數值3,它是從右邊第二個數字開始,然後從0開始,然後堆疊它,最後一疊[1 2 3 4 5 3]。)
嘗試std::vector<int>
。它似乎是爲你正在做的事精心設計的。 使用back()
獲取堆棧頂部的值,然後pop_back()
將其刪除。 使用stack[n]
獲得stack
的第n個元素的副本。
'pop_back()'確實刪除了最後一個值,但它什麼也沒有返回。爲了獲得最後的值,你必須首先調用'back()',它只是檢查值,然後'pop_back()'實際刪除它。 – CoryKramer
你有沒有試過'std :: stack []'? – ChiefTwoPencils
當我第一次寫回答時,我肯定一直在想一些其他的'pop()'函數。我糾正了錯誤。我不知道如何複製「top」元素以外的「std :: stack」元素。 –
看起來像數據結構可能不是最好的,如果你要通過索引經常訪問它。
你可以,如果你正在使用Visual Studio和Microsoft C++實現做如果,只有可能什麼,你需要做的場合,你能告訴std::stack
使用向量作爲一個容器,與默認std::deque
相反,並使用_Get_container()
訪問它。 std::vector
允許索引訪問。這是一個將打印我的堆棧中第一個元素的示例。
#include <string>
#include <stack>
#include <iostream>
#include <vector>
int main(void) {
std::stack<std::string, std::vector<std::string> >stringStack;
stringStack.push("Hello");
stringStack.push("World");
std::cout << stringStack._Get_container()[0];
}
Output: Hello
不是一個好的解決方案。誰說實現提供了一個'_Get_container'方法呢?但是,如果需要索引,則說明堆棧是錯誤的數據結構。 –
@ChristianHackl:優點!我一直在使用VS太多。 – ChiefTwoPencils
您可能想要編輯您的答案並提及它取決於VC實施細節。 –
法語*一堆*確實是一個堆棧。最近的值通常被簡單地稱爲__top__(而不是*高峯*)。添加到堆棧通常被稱爲__push__,並將其作爲__pop__(而不是unpack)移除。 – Taum