3.3 Conteneurs STL couramment utilisés -- 5. Conteneur de file d'attente

5. conteneur de file d'attente

5.1 Concept de base de file d'attente

concept:

  • La file d'attente est une structure de données premier entré, premier sorti (premier entré, premier sorti, FIFO)
  • Le conteneur de file d'attente permet d'ajouter des éléments d'un côté et de supprimer des éléments de l'autre côté
  • Seules la tête et la queue de la file d'attente peuvent être utilisées par le monde extérieur, de sorte que la file d'attente n'autorise pas le comportement de traversée. Les données
     entrant dans la file d'attente sont appelées - entrer dans la file d'attente. Pousser
     les données hors de la file d'attente s'appelle - sortir de la file d'attente.

5.2 Interface commune de file d'attente

Description de la fonction:

  • Interfaces externes couramment utilisées des conteneurs empilés

Constructeur:

  • queue que; // la file d'attente est implémentée par la classe de modèle, la forme de construction par défaut de l'objet file d'attente
  • queue(const queue &que); // copie le constructeur

Opération d'affectation :

  • file d'attente &operator=(const queue &que); // opérateur égal surchargé

Accès aux données :

  • push(elem); // Ajoute des éléments à la fin de la file d'attente
  • pop(); // supprime le premier élément de la tête de la file d'attente
  • back(); // renvoie le dernier élément
  • front(); // renvoie le premier élément

Opération de taille :

  • vide(); // Vérifie si la pile est vide
  • size(); // renvoie la taille de la pile

Exemple de code :

#include<iostream>
using namespace std;
#include<queue>
#include<string>

class Person
{
    
    
public:
	Person(string name, int age) 
	{
    
    
		this->m_Name = name;
		this->m_Age = age;
	}
	string m_Name;
	int m_Age;
};

void test_01()
{
    
    
	// 创建队列
	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);
	// 队列不提供迭代器,更不支持随机访问
	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;
}
int main()
{
    
    
	test_01();
	system("pause");
	return 0;
}

おすすめ

転載: blog.csdn.net/yewumeng123/article/details/131154669