声明空堆栈的最有效方法是什么
What is the most efficient way to declare an empty stack?
2个类(不使用库中的堆栈)
堆栈和节点
int Stack::pop(void)
{
int ret = 0;
if (top == nullptr)
{
cout<<"Empty";
}
else
{
ret = top->getValue(); //show value
}
return ret;
}
同时在主中
cout<< myAlreadyDeclaredStack.pop();
output: Empty0
我的问题是字符串后面会有一个0(因为该方法需要返回一个int)
朋友们,有什么想法吗?
如果你绝对想避免异常(尽管我不认为它们像你想象的那样效率低下),你可以做几件事。
-
如果堆栈总是存储
int
(或数字)变量,则可以使用预定义的"错误"返回,如numeric_limits<int>::min()
-
您可以有一个
pop()
版本,它采用变量引用IEbool pop(int& val)
,将val更改为弹出值,如果堆栈为空,则返回false。
我相信还有其他解决方案,但我想到了这两个。我真的不明白你为什么对使用异常如此犹豫,但它们基本上适用于这种情况。
if(top!= NULL)
{
ret = top->getVal();
}
else
{
throw "Stack Empty";
}
int main(void)
try
{
cout<< myAlreadyDeclaredStack.pop();
}
catch (const char* msg)
{
cout<< msg <<endl;
}
对我来说似乎很难看,每次在方法中都必须处理异常,总的来说似乎效率很低。
这是唯一的方法/最有效的方法吗?(毕竟,堆栈是关于速度的)
这是个好主意,但很难实现
void Stack::isEmpty(void)
{
if (top == nullptr)
cout<<" Empty"
else
top.pop();
}
main
declaredStack.isEmpty(); //wouldn't return a value (to maybe use/manipulate it)
//, just display it --if I set it to display in pop()
//and if I put isEmpty in pop I'm back to having to return a value
相关文章:
- 在C++中初始化向量映射的最有效方法
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++变量的最有效方法
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 确保套装新鲜度的有效方法
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在C++事务之间存储大量字符数据的有效方法
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 检查两个向量是否并行的最有效方法
- 从浮点数中删除小数部分但保留类型的有效方法
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 创建字符串数组的有效方法
- 返回一个引用C++中另一个类对象的对象的有效方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 从std::map值中获取密钥的有效方法