記事のディレクトリ
1キューの基本概念
特長:キューがqueue
ある先入れ先出し(FIFO
含む、先入れ先出し)データ構造、2つの出口で、尾要素(入队
)をに挿入しますチームのリーダー要素(出队
)を削除します。
行頭/行頭:、front()
キューコンテナを使用すると、要素を行頭から削除できます。キューの
終わり:、back()
キューコンテナでは、キューの終わりから要素を追加できます。
注:キューでは、唯一のチームヘッドと尾外の世界からアクセスして使用できるのでキューはトラバーサル動作を許可しません。
チームに参加する:、チームpush()
の最後に要素を追加します。
デキュー:、pop()
チームのヘッド/チームのリーダーから要素を削除します。
2キュー共通インターフェース
注:キューコンテナを使用する場合は、ヘッダーファイルをインクルードする必要があります
#include <queue>
。
コンストラクター:
① queue<T> que;
:デフォルトの引数なしコンストラクター。クラステンプレートによって実装されます。
② queue(const queue &que);
:コンストラクタをコピーし、既存のキューオブジェクトを使用して新しいオブジェクトを初期化します。
代入演算::
queue& operator=(const queue &que);
代入演算子をオーバーロードし、ターゲットキューコンテナを使用して現在のキューコンテナに値を割り当てます。
データアクセス::
push(elem);
チームの最後に要素を追加します。
pop();
:チームのヘッドから要素を削除します。
front();
:チームの最初の要素(最初の要素)に戻ります。
back();
:テール要素(最後の要素)に戻ります。
サイズ操作:
empty();
キューが空かどうかを判別します。
size();
:キューのサイズ/長さを返します。
例:キューの共通インターフェース
#include <iostream>
using namespace std;
#include <queue>
class Person {
public:
string name;
int level;
Person(string name, int level) {
this->name = name;
this->level = level;
}
};
int main() {
//创建队列
queue<Person> q;
Person p1("唐僧", 30);
Person p2("孙悟空", 99);
Person p3("猪悟能", 60);
Person p4("沙悟净", 50);
//入队
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
cout << "当前队列大小:" << q.size() << endl; //4
//循环出队
while (!q.empty()) {
cout << "当前队首元素:" << q.front().name << endl;
cout << "当前队尾元素:" << q.back().name << endl;
cout << "***********" << endl;
//出队
q.pop();
}
cout << "当前队列大小:" << q.size() << endl; //0
return 0;
}