思路方法参考:http://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html-------用两个栈实现一个队列——我作为面试官的小结
代码:
#include<iostream>
#include<stack>
using namespace std;
template<typename T>
class MyStack
{
public:
void pop()
{
if(s2.empty())
{
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
cout << s2.top() << " ";
s2.pop();
}
else
{
cout << s2.top() << " ";
s2.pop();
}
}
void push(const T& val)
{
s1.push(val);
}
private:
stack<T> s1;
stack<T> s2;
};
int main(void)
{
MyStack<int> my_stack;
my_stack.push(1);
my_stack.push(2);
my_stack.push(3);
my_stack.pop();
my_stack.pop();
my_stack.pop();
return 0;
}
体会:
函数参数能用const引用尽量用const引用。比如push写成这样就会出错:
void push(T& val)
{
s1.push(val);
}
参考:http://blog.csdn.net/stpeace/article/details/40871801#---------- C++的常量引用