#include<iostream>
#include<vector>
using namespace std;
class Stack
{
public:
int top;
vector<int> v;
Stack(int size)
{
top=0;
cout<<"Enter the values"<<endl;
for(int i=0; i<size; i++)
{
int val;
cin>>val;
v.push_back(val);
top++;
}
}
void push(int val)
{
v.push_back(val);
top++;
}
int pop()
{
int x=v[top];
top--;
return x;
}
void disp()
{
for(int j=top; j<=0; j--)
cout<<v[j]<<' ';
}
};
int main()
{
Stack s(3);
int k=s.pop();
cout<<k;
return 0;
}
我正在努力学习OOP的基础知识。
这里,我的Stack构造函数和push函数工作正常,但是pop和disp函数存在问题。 我假设我使用不正确的语法来访问向量的元素(可能?)。谁能告诉我哪里出错了?
此外,k的值总是为0。
答案 0 :(得分:2)
您可以使用矢量函数
int k = s.back();
s.pop_back();
cout << k;
答案 1 :(得分:1)
你有一个一个一个索引错误。
您实施课程的方式,当堆栈中有N
个项目时,top
的值为N
。
因此,top
不是访问v
元素的有效索引。您可以使用:
int pop()
{
int x=v[top-1];
top--;
return x;
}
或
int pop()
{
top--;
int x=v[top];
return x;
}
答案 2 :(得分:1)