c++ 栈 STL的基本操作

参考:https://www.cnblogs.com/QG-whz/p/5170418.html#_label0

栈的存储结构

栈既然是一种线性结构,就能够以数组或链表(单向链表、双向链表或循环链表)作为底层数据结构。

堆栈操作

和其他序列容器相比,stack 是一类存储机制简单、所提供操作较少的容器。下面是 stack 容器可以提供的一套完整操作:
top(): 返回一个栈顶元素的引用,类型为 T&。如果栈为空,返回值未定义。
push(T&& obj): 以移动对象的方式将对象压入栈顶。这是通过调用底层容器的有右值引用参数的
pop(): 弹出栈顶元素。
size():返回栈中元素的个数。
empty(): 在栈中没有元素的情况下返回 true。
emplace(): 用传入的参数调用构造函数,在栈顶生成对象。

swap(stack & other_stack): 将当前栈中的元素和参数中的元素交换。参数所包含元素的类型必须和当前栈的相同。对于 stack 对象有一个特例化的全局函数 swap() 可以使用。

代码

#include
#include
using namespace std;
int main()
{
	stack<int> s1,s2;
	for (int i = 0; i < 10; i++)
	{
		s1.push(i);
	}
	for (int i = 0; i < 10; i++)
	{
		s2.push(i+10);
	}
	cout << "s1.empty(): " << s1.empty() << endl;
	cout << "s1.size(): " << s1.size() << endl;
	cout << "s1.top(): " << s1.top() << endl;

	cout << endl << "执行 s1.pop() " << endl;
	s1.pop();
	cout << "此时 s1.top(): " << s1.top() << endl;
	
	cout << endl << "执行 swap(s1,s2) " << endl;
	swap(s1, s2);
	cout << "s1的元素" << endl;
	while (!(s1.empty()))
	{
		cout << s1.top()<<" ";
		s1.pop();
	}
	cout <<endl<< "s2的元素" << endl;
	while (!s2.empty())
	{
		cout << s2.top()<<" ";
		s2.pop();
	}
}

小结:

栈还是比较简单的,毕竟它的底层结构是数组或链表,只要明白栈的先进后出特性就好

学习了栈,队列也不难毕竟队列的的层结构也是线性的c++ 队列 STL库的基本操作

你可能感兴趣的:(c++,学习记录)