【发布时间】:2023-03-05 23:23:02
【问题描述】:
在 Java 中,我们可以像这样打印堆栈
Stack<Integer> s = new Stack<>();
System.out.print(s);
如何在 C++ 中做同样的事情,既不弹出元素又不循环?
【问题讨论】:
-
如果你说的是
std::stack,那就没办法了。您必须复制它,然后循环弹出要打印的元素 -
@SachinRajput 所以? Java 和 C++ 是两种截然不同的语言。
-
欢迎您在 C++ 中实现自己的
Stack类并覆盖<<运算符,但std::stack不会。 C++ 不是 Java。 -
Java != C++。 Ether java 在幕后制作副本并做同样的事情,或者它的 print 函数知道并且可以访问堆栈的内部,因此它不需要弹出。您必须创建自己的堆栈并重载输出运算符才能执行相同操作
-
实现一个行为类似于
std::stack的类“可调试堆栈”是有意义的,除非由一个友好的“调试”类操作,它允许访问堆栈中的所有元素,而无需弹出它们。或者一个类“peekable stack”,它只允许堆栈操作来修改它,但在查看它而不修改它时允许更多操作。
标签: c++ data-structures stack