我在课堂上被问到这个问题,但我们已经没时间了,我似乎无法在互联网上找到任何全面的信息。如果我使用括号初始化数组,那么它与创建堆栈类数组有何不同?
使用堆栈我实际上正在初始化一个数组,就像在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 ++标准。
我试图提高我的得分,所以我可以发布另一个问题,我不确定我是否应该删除问题或编辑它们以获得更好的信誉。
答案 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,因为这样可以访问迭代器和容器方法,并允许您在标准算法中使用数组。