1.基本的な考え方
キューコンテナは、データ構造で学習されたキューです。
特徴は次のとおりです。先入れ先出し(先入れ先出し、FIFO)、2つの出口があります。
キューコンテナを使用すると、一方の端から要素を追加したり、もう一方の端から要素を削除したりできます。
キューの先頭と末尾のみが外部で使用できるため、キューはトラバーサル動作を許可しません。
キュー内の受信データはエンキューと呼ばれます push
キューから出たデータは呼び出されます- デキュー pop
2.一般的に使用されるインターフェース
関数の説明:スタックコンテナの一般的に使用される外部インターフェイス
コンストラクタ:
queue<T> que;
//キューは、キューオブジェクトのデフォルト構造であるテンプレートクラスを使用して実装されますqueue(const queue &que);
//コンストラクタをコピーします
代入演算:
queue& operator=(const queue &que);
//等号演算子をオーバーロードします
データアクセス:
push(elem);
//チームの最後に要素を追加しますpop();
//チームのトップから最初の要素を削除しますback();
//最後の要素に戻るfront();
//最初の要素を返します
サイズ操作:
empty();
//スタックが空かどうかを判断しますsize();
//スタックのサイズを返します
例:
#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 test01() {
//创建队列
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;
cout << endl;
//弹出队头元素
q.pop();
}
cout << "队列大小为:" << q.size() << endl;
}
int main() {
test01();
system("pause");
return 0;
}
総括する:
- チームに参加—プッシュ
- チーム外—ポップ
- ヘッド要素に戻る—フロント
- テール要素に戻る—戻る
- チームが空かどうかを判断します—空
- リターンキューサイズ—サイズ