我正在使用STL堆栈容器的默认功能(push,pop,top,empty,size)。如果我想添加更多功能,比如从堆栈中间访问元素。
我怎么能这样做?
由于
答案 0 :(得分:1)
如果这是面试问题或其他问题,你必须这样做,你可以这样做,如下面的代码。派生自std::stac
,并重载operator[]
#include <iostream>
#include <algorithm>
#include <stack>
#include <exception>
#include <stdexcept>
template <typename T>
class myStack:public std::stack<T>
{
public:
T operator[](long index)
{
std::stack<T> temp;
T tempVal;
for(long i=0;i<index;++i)
{
if(this->template empty())
throw std::out_of_range("Index out of range");
tempVal = this->template top();
temp.push(tempVal);
this->template pop();
}
//T retVal = this->template top();
while(!temp.empty())
{
T tempVal = temp.top();
this->template push(tempVal);
temp.pop();
}
return tempVal;
}
};
int main(void)
{
myStack<int> st;
st.push(5);
st.push(1);
st.push(7);
st.push(9);
st.push(4);
std::cout<<"3rd Element :"<<st[3]<<std::endl;
return 0;
}