C++ 泛型编程:stack 和 queue 容器

stack 基本概念

  • stack 是一种先进后出(FILO)的数据结构,它只有一个出口
  • stack 不允许有遍历行为

stack 构造函数

  • stack<T> s;
  • stack<T> s( const stack& st );

stack 赋值操作

  • stack& operator=( const stack& st );

stack 数据存取

  • void push( elem )
  • void pop()
  • T& top();

大小操作

  • bool empty();
  • int size();
void stack_example()
{
	stack<int> s;
	s.push(10);
	s.push(20);
	s.push(30);
	s.push(40);

	cout << "栈的大小:" << s.size() << endl;
	while (!s.empty())
	{
		cout << "栈顶元素为:" << s.top() << endl;
		s.pop();
	}
	cout << "栈的大小:" << s.size() << endl;
}

queue 基本概念

  • queue 是一种先进先出(FIFO)的数据结构,有两个出口
  • queue 允许从一端新增元素,从另一端移除元素
  • queue 只有队头和队尾才可以被外界使用
  • queue 不允许遍历

queue 构造函数

  • queue<T> q;
  • queue<T> q( const queue& que );

queue 赋值操作

  • queue& operator=( const queue& que );

queue 数据存取

  • void push( elem )
  • void pop()
  • T& front();
  • T& back();

大小操作

  • bool empty();
  • int size();
void queue_example()
{
	queue<Person> q;
	Person p1("唐僧", 30);
	Person p2("孙悟空", 1000);
	Person p3("猪八戒", 900);
	Person p4("沙僧", 800);

	q.push(p1);
	q.push(p2);
	q.push(p3);
	q.push(p4);

	cout << "队列大小为:" << q.size() << endl;
	while (!q.empty())
	{
		cout << "对头元素 --- 姓名:" << q.front().m_name << " 年龄:" << q.front().m_age << endl;
		cout << "对尾元素 --- 姓名:" << q.back().m_name << " 年龄:" << q.back().m_age << endl;
		q.pop();
	}
	cout << "队列大小为:" << q.size() << endl;
}