【问题标题】:Difference between array and array stack?数组和数组栈的区别?
【发布时间】:2016-03-03 20:00:59
【问题描述】:

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

我实际上是在初始化一个数组,就像在 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 容器,而问题是针对教室的,因为我们使用数组创建了自己的“堆栈”。堆栈是 LIFO 结构,这是一个测试问题,要求我们辨别 c++ 数组和我们在课堂上创建的“数组堆栈”之间的区别。在提出这个问题时我误解了,并认为数组堆栈是某种 C++ 标准。

我正在尝试提高我在 SO 上的分数,以便我可以发布另一个问题,但不确定我是否应该删除问题或编辑它们以获得更好的地位。

【问题讨论】:

  • “数组的堆栈类”是什么意思?你能举个例子吗?
  • 这些术语听起来像是特定于您的课堂。你可能想在课外让你的教授澄清一下,或者在下一节课开始时提出来。
  • 需要更多上下文。我同意凯文的问题。我不知道这个问题可以按原样回答。
  • @ChristopherSchneider 我编辑了这个问题。我的意思更多的是使用数组实现的堆栈与使用 std::array 的不同之处。

标签: c++ arrays data-structures stack


【解决方案1】:

在 C++ 标准库中,您有 std::vector、std::stack、std::deque 和 std::array。它们都是“类似数组”的容器,但它们服务于不同的用例。您还拥有从 C 继承的本机数组,但通常您不想使用它。

这是一个(在几个)很好的 C++ 在线参考资料:cppreference.com [已编辑]

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

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

【讨论】:

  • 你链接的网站很糟糕,而且充满了错误
  • 作为一个更有建设性的反馈,网站cppreference.com通常被认为是C++的高质量参考网站,而cplusplus.com历来有很多错误和不正确的信息它。展望未来,我建议使用 cppreference。
  • 我的立场是正确的。 (通常,当我需要确切地知道某事是如何工作时,我会随机使用任何一种方法——但你是对的,cppreference.com 是更好的选择)。
猜你喜欢
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多