数组和堆栈之间的区别?

问题描述:

有人问我这个类,但我们跑出来的时间,我似乎无法找到任何关于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

需要更多的上下文。我第二个凯文的问题。 我不知道这个问题可以按原样回答。 –

在你已经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