利用栈实现整型多进制转换

来源:互联网 发布:廊坊php待遇 编辑:程序博客网 时间:2024/06/05 09:40
#include<iostream>#include<stack>#include<string>using namespace std;void Multioutput(int num,int b){string numlist="0123456789ABCDEF";stack<char>st;while(num){st.push(numlist[num%b]);num=num/b;}while(!st.empty()){cout<<st.top();st.pop();}cout<<endl;}int main(){int num=123;int b;while(cin>>b&&b){Multioutput(num,b);}return 0;}

关于栈中为什么pop元素没有返回值,而是使用top来返回元素的值,这里要做一下说明,如果pop返回栈顶部的元素,如果按值返回则会调用复制构造函数,从而造成很大的开销。而按引用返回,则必须将该元素存储到动态内存中,因为pop要将元素删除,如果不另开辟内存是不行的,但是除非开辟的动态内存最后被删除,否则会造成内存泄露。