本文整理汇总了C++中Iter::as_operand方法的典型用法代码示例。如果您正苦于以下问题:C++ Iter::as_operand方法的具体用法?C++ Iter::as_operand怎么用?C++ Iter::as_operand使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Iter
的用法示例。
在下文中一共展示了Iter::as_operand方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runtime_error
template <typename Iter> double RPN(Iter first, Iter last){
Iter a = first;
stack<double> d;
while(a!=last){
double result=0.0;
if(a->is_operand()==true){
// if(d.size() <= 1) {
d.push(a->as_operand());
// }
// else throw runtime_error("error");
}
else{
if (d.size() < 2) throw runtime_error("error");
double y=d.top();
d.pop();
double x=d.top();
d.pop();
if(a->as_operator()=='+'){
result=x+y;
}
if(a->as_operator()=='-'){
result=x-y;
}
if(a->as_operator()=='*'){
result=x*y;
}
if(a->as_operator()=='/'){
if(y==0){
throw runtime_error("error");
}else{
result=x/y;
}
}
d.push(result);
}
a++;
}
if(d.size()>1){
throw runtime_error("error");
}else{
return d.top();
}
} // RPN