大小()==0){ std::堆栈新闻标题; 新闻标题.推送(d); 堆叠->向后推(新闻图钉); } 否则{ std::stack s=stacks->back(); 标准::cout,c++,stack,stdvector,C++,Stack,Stdvector" /> 大小()==0){ std::堆栈新闻标题; 新闻标题.推送(d); 堆叠->向后推(新闻图钉); } 否则{ std::stack s=stacks->back(); 标准::cout,c++,stack,stdvector,C++,Stack,Stdvector" />

在c+中实现一组堆栈+; 我尝试用C++中的向量实现一组栈。因此,我首先声明std::stack类型的std::vector,然后对vector中的堆栈执行正常的push和pop操作。堆栈有一个阈值。如果向量中的堆栈已达到其阈值,则我将向向量添加一个新堆栈。实施情况如下: #define threshold 3 class setOfStacks{ std::vector<std::stack<int> > *stacks; public: setOfStacks(){ stacks = new std::vector<std::stack<int> >(); }; ~setOfStacks(){}; void push(int d){ if(stacks->size()==0){ std::stack<int> newStack; newStack.push(d); stacks->push_back(newStack); } else{ std::stack<int> s = stacks->back(); std::cout<<s.size()<<"\n"; if(s.size()!=threshold){ s.push(d); } else{ std::stack<int> newStack; newStack.push(d); stacks->push_back(newStack); } std::cout<<s.size()<<"\n"; } } void pop(){ if(stacks->size()==0){ std::cout<<"No elements in the stack\n"; } else{ std::stack<int> s; s = stacks->back(); if(!s.empty()){ std::cout<<s.top()<<" is being removed\n"; s.pop(); } else{ stacks->pop_back(); pop(); } } } }; int main(){ setOfStacks stackSet; stackSet.push(1); stackSet.push(2); stackSet.push(3); stackSet.push(4); stackSet.push(5); stackSet.push(6); stackSet.push(7); stackSet.push(8); stackSet.push(9); stackSet.pop(); stackSet.pop(); stackSet.pop(); stackSet.pop(); return 0; } #定义阈值3 类堆栈集{ std::向量*堆栈; 公众: setOfStacks(){ 堆栈=新的std::vector(); }; ~setOfStacks(){}; 无效推送(int d){ 如果(堆栈->大小()==0){ std::堆栈新闻标题; 新闻标题.推送(d); 堆叠->向后推(新闻图钉); } 否则{ std::stack s=stacks->back(); 标准::cout

在c+中实现一组堆栈+; 我尝试用C++中的向量实现一组栈。因此,我首先声明std::stack类型的std::vector,然后对vector中的堆栈执行正常的push和pop操作。堆栈有一个阈值。如果向量中的堆栈已达到其阈值,则我将向向量添加一个新堆栈。实施情况如下: #define threshold 3 class setOfStacks{ std::vector<std::stack<int> > *stacks; public: setOfStacks(){ stacks = new std::vector<std::stack<int> >(); }; ~setOfStacks(){}; void push(int d){ if(stacks->size()==0){ std::stack<int> newStack; newStack.push(d); stacks->push_back(newStack); } else{ std::stack<int> s = stacks->back(); std::cout<<s.size()<<"\n"; if(s.size()!=threshold){ s.push(d); } else{ std::stack<int> newStack; newStack.push(d); stacks->push_back(newStack); } std::cout<<s.size()<<"\n"; } } void pop(){ if(stacks->size()==0){ std::cout<<"No elements in the stack\n"; } else{ std::stack<int> s; s = stacks->back(); if(!s.empty()){ std::cout<<s.top()<<" is being removed\n"; s.pop(); } else{ stacks->pop_back(); pop(); } } } }; int main(){ setOfStacks stackSet; stackSet.push(1); stackSet.push(2); stackSet.push(3); stackSet.push(4); stackSet.push(5); stackSet.push(6); stackSet.push(7); stackSet.push(8); stackSet.push(9); stackSet.pop(); stackSet.pop(); stackSet.pop(); stackSet.pop(); return 0; } #定义阈值3 类堆栈集{ std::向量*堆栈; 公众: setOfStacks(){ 堆栈=新的std::vector(); }; ~setOfStacks(){}; 无效推送(int d){ 如果(堆栈->大小()==0){ std::堆栈新闻标题; 新闻标题.推送(d); 堆叠->向后推(新闻图钉); } 否则{ std::stack s=stacks->back(); 标准::cout,c++,stack,stdvector,C++,Stack,Stdvector,这一行: std::stack<int> s = stacks->back(); 当使用引用进行更改时,更改将反映在堆栈的矢量中。当您试图创建堆栈时,必须考虑元素是如何添加到这样的数据结构中的,在前面或后面。nd插入的最后一个元素将位于向量的底部。因此,要使用此向量创建堆栈将很容易,只需从底部“弹出”元素。因此,向量的底部将是堆栈的顶部。然后像往常一样向向量添加或推送元素。 std::stack<int> &s = stacks->back();

这一行:

std::stack<int> s = stacks->back();

当使用引用进行更改时,更改将反映在堆栈的矢量中。

当您试图创建堆栈时,必须考虑元素是如何添加到这样的数据结构中的,在前面或后面。nd插入的最后一个元素将位于向量的底部。因此,要使用此向量创建堆栈将很容易,只需从底部“弹出”元素。因此,向量的底部将是堆栈的顶部。然后像往常一样向向量添加或推送元素。
std::stack<int> &s = stacks->back();