2016-03-03 210 views
-1

有人問我這個類,但我們跑出來的時間,我似乎無法找到任何關於interweb全面。如果我用括號初始化一個數組,這與創建一個數組的棧類有什麼不同?數組和堆棧之間的區別?

隨着堆我在實際初始化數組作爲典型的做法如int數組[5] {1,2,3,4,5}還是我只是初始化指針在存儲器中的一些空間,存儲一些數據那裏,並使用堆棧的成員函數來操作和操作數據?

class IntStack 
{ 
public: 
    IntStack(int num) { top = 0; maxelem = num; s = new int[maxelem]; } 
    void push(int t) 
    { 
     if (top == maxelem) return; 
     s[top++] = t; 
    } 
    int pop() 
    { 
     if (top == 0) return -1; 
     return s[--top]; 
    } 
    void display() 
    { 
    if (top == 0) { cout << "(empty)\n"; return; } 
    for (int t=0 ; t < top ; t++) cout << s[t] << " "; 
    cout << "\n"; 
    } 
    int empty() { return top == 0; } 
private: 
    int *s; 
    int top; 
    int maxelem; 

這是我們寫下的代碼。我試圖理解堆棧使用數組實現和不同的數組容器。

編輯:

這是想通了,這是我在當時的過程混亂。教授試圖向我們展示STL容器是如何通過讓我們創建自己的容器來實現的,這個問題是特定於教室的,因爲我們使用數組創建了自己的「堆棧」。一個堆棧是一個LIFO結構,這是一個測試問題,要求我們辨別C++數組和我們在課堂上創建的「數組堆棧」之間的區別。在這個問題的時候我誤解了,並且認爲數組堆棧是C++標準的東西。

我試圖讓我的得分如此如此,我可以張貼另一個問題,我不知道我是否應該刪除的問題或編輯它們更好地站立獲得。

+0

你說的「棧類陣列的」呢?你能舉個例子嗎? – Kevin

+1

這些術語聽起來像是你的教室特有的。您可能想要讓您的教授在課外澄清,或者在下一堂課開始時提出。 – Xirema

+0

需要更多的上下文。我第二個凱文的問題。 我不知道這個問題可以按原樣回答。 –

回答

-1

在你已經STD中的C++標準庫::矢量,性病::棧,性病::雙端隊列和std ::陣列。所有這些都是「數組像」容器,但它們服務於不同的使用情況。你也有從C繼承的本地數組,但通常你不想使用它。

這是一個(其中幾個)爲C++好在線參考:cppreference.com [編輯]

int array[5] = {1,2,3,4,5}; 

這會預留的存儲器緩衝器5點的整數,用 「C」 的數組。在C++ 11及更高版本中,您幾乎總是希望使用std :: array,因爲這樣可以訪問迭代器和容器方法,並且允許您在標準算法中使用數組。

+2

您鏈接到該網站是可怕的,充滿錯誤 –

+1

作爲反饋更具建設性的一塊,網站'cppreference.com'通常被認爲是C++的一個高品質的參考網站,而'cplusplus.com'歷來它有很多錯誤和不正確的信息。展望未來,我建議使用cppreference。 – templatetypedef

+1

我站好了。 (通常,當我需要確切地知道某些事情是如何工作的時候,我會隨機結束使用 - 但是你是對的,cppreference.com更好)。 – jgaa