要打印std::stack
的内容并返回其大小,可以通过以下步骤实现:
std::stack
是C++标准库中的一个容器适配器,它提供了栈的基本操作,如push、pop和top。栈是一种后进先出(LIFO)的数据结构。
std::deque
)提供了高效的插入和删除操作。std::stack
可以基于不同的底层容器实现,如std::deque
、std::vector
等,默认情况下使用std::deque
。
std::stack
的内容并返回其大小由于std::stack
没有提供迭代器,无法直接遍历其内容。可以通过将栈中的元素临时转移到另一个容器(如std::vector
)来实现打印和计算大小。
#include <iostream>
#include <stack>
#include <vector>
template <typename T>
void printStack(std::stack<T>& s) {
std::vector<T> temp;
size_t size = s.size();
while (!s.empty()) {
temp.push_back(s.top());
s.pop();
}
std::cout << "Stack size: " << size << std::endl;
std::cout << "Stack contents: ";
for (auto it = temp.rbegin(); it != temp.rend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// Restore the stack
for (auto it = temp.rbegin(); it != temp.rend(); ++it) {
s.push(*it);
}
}
int main() {
std::stack<int> s;
s.push(1);
s.push(2);
s.push(3);
printStack(s);
return 0;
}
std::vector
作为临时容器来存储栈中的元素。通过这种方式,你可以打印std::stack
的内容并返回其大小,同时保持栈的原始状态。
领取专属 10元无门槛券
手把手带您无忧上云