数组和数组栈之间的区别?

时间:2016-03-03 20:01:00

标签: c++ arrays data-structures stack

我在课堂上被问到这个问题,但我们已经没时间了,我似乎无法在互联网上找到任何全面的信息。如果我使用括号初始化数组,那么它与创建堆栈类数组有何不同?

使用堆栈我实际上正在初始化一个数组,就像在int array [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容器来实现,而问题是针对课堂的,因为我们创建了自己的&#34;堆栈&#34;使用数组。堆栈是一个LIFO结构,这是一个测试的问题,要求我们辨别c ++数组和&#34;数组栈之间的区别&#34;我们在课堂上创造了。我在这个问题的时候误解了,并认为数组栈是C ++标准。

我试图提高我的得分,所以我可以发布另一个问题,我不确定我是否应该删除问题或编辑它们以获得更好的信誉。

1 个答案:

答案 0 :(得分:-1)

在C ++标准库中,您有std :: vector,std :: stack,std :: deque和std :: array。所有这些都是&#34;阵列像&#34;容器,但它们服务于不同的用例。您还拥有从C继承的本机数组,但通常您不希望使用它。

这是C ++的一个(在几个)良好的在线参考文献中:cppreference.com [已编辑]

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

这将为5个整数保留一个内存缓冲区,使用&#34; C&#34;阵列。使用C ++ 11及更高版本,您几乎总是希望使用std :: array,因为这样可以访问迭代器和容器方法,并允许您在标准算法中使用数组。