打印堆栈所有元素的功能
Function to print all elements of stack?
我想打印字符堆栈的所有元素。这是我的函数:
void print_stack(stack<char> c)
{
stack<char> a = c;
for (unsigned int i = 0; i < a.size(); i++) {
std::cout<<a.top();
a.pop();
}
}
目前,它只打印前a.size() - 1
元素,而不打印最后一个元素。我很难弄清楚为什么会这样。
你的循环是错误的,考虑一下当你做a.pop()
时a
会发生什么 如果a.size()
是 3,现在是 2,所以你的循环将少迭代一次。您应该这样做:
while (!a.empty()) {
std::cout<<a.top();
a.pop();
}
此外,您不需要复制c
,因为无论如何您正在为此函数的范围创建c
的副本void print_stack(stack<char> &c)
您的函数符号void print_stack(stack<char> c)
。这意味着这就足够了:
void print_stack(stack<char> c) {
while (!c.empty()) {
std::cout<<c.top();
c.pop();
}
}
这是一个活生生的例子。
for (unsigned int i = 0; i < c.size(); i++)
或
while(a.size() > 0)
你也可以简单地做
std::stack<int> c;
std::cout << c; //[a, b, c]
虽然您无法格式化它,但您将能够获得它的表示形式。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 为什么在功能内擦除元素后不列出更新?
- 如何部分专业化功能以用元组元素作为参数调用功能
- 编写一个递归功能,该功能采用数组并以相反顺序显示元素,而无需在末尾启动数组的索引
- call call cons构件功能的std ::元素的每个元素
- 仅当元组中存在该类型时,将功能应用于元组元素
- 使用指针在功能中的数组中添加/删除元素
- 按元素的功能搜索upper_bound
- 将相同的功能应用于不同大小的N数组的每个元素
- 在C 中,可以用语法[i,j,..]实现访问数组元素的功能,而语法就像numpy中的ndarray样式一样
- 我可以用具有相同功能名称的多个DLL加载元素吗?
- 将功能应用于数组中的每个元素
- 如何对包含 pair<int,int> 元素的向量进行排序?排序是根据比较功能完成的
- 打印堆栈所有元素的功能
- 将函数应用于参数包的每个元素的语言功能
- 如何在std::set中为插入唯一元素提供比较功能
- CUDA功能只适用于某些元素
- lower_bound功能,而不创建T元素