STL-一般的なコンテナ
3.5 stack容器
3.5.1スタックの基本概念
概念:スタックは後入れ先出し(FILO)データ構造であり、出口は1つだけです。
スタックの最上位の要素のみが外部で使用できるため、スタックはトラバーサル動作を許可しません
スタックへのデータの入力は、スタックへの-と呼ばれます push
スタックからのデータのポップは、ポップと呼ばれます pop
人生のスタック:
3.5.2スタックの共通インターフェース
関数の説明:スタックコンテナで一般的に使用される外部インターフェイス
コンストラクタ:
stack<T> stk;
//スタックは、スタックオブジェクトのデフォルトの構築形式であるテンプレートクラスによって実装されますstack(const stack &stk);
//コンストラクタをコピーします
代入演算:
stack& operator=(const stack &stk);
//equals演算子をオーバーロードします
データアクセス:
push(elem);
//要素をスタックの一番上に追加しますpop();
//スタックの一番上から最初の要素を削除しますtop();
//スタックの最上位要素を返します
サイズ操作:
empty();
//スタックが空かどうかを確認しますsize();
//スタックのサイズを返します
例:
#include <stack>
//栈容器常用接口
void test01()
{
//创建栈容器 栈容器必须符合先进后出
stack<int> s;
//向栈中添加元素,叫做 压栈 入栈
s.push(10);
s.push(20);
s.push(30);
while (!s.empty()) {
//输出栈顶元素
cout << "栈顶元素为: " << s.top() << endl;
//弹出栈顶元素
s.pop();
}
cout << "栈的大小为:" << s.size() << endl;
}
int main() {
test01();
system("pause");
return 0;
}
要約:
- スタック上—プッシュ
- ポップ-ポップ
- スタックの一番上に戻る— top
- スタックが空かどうかを判断します—空
- 戻りスタックサイズ—サイズ
3.6キューコンテナ
3.6.1キューの基本概念
概念:キューは、 2つの出口を持つ先入れ先出し(先入れ先出し、FIFO)データ構造です。
キューコンテナを使用すると、一方の端から要素を追加し、もう一方の端から要素を削除できます
キューの先頭と末尾のみが外部で使用できるため、キューはトラバーサル動作を許可しません
キュー内の着信データは次のように呼び出されます-enqueue push
キューから出たデータは呼び出されます-dequeue pop
人生の待ち行列:
3.6.2キューの共通インターフェース
関数の説明:スタックコンテナで一般的に使用される外部インターフェイス
コンストラクタ:
queue<T> que;
//キューは、キューオブジェクトのデフォルトの構築形式であるテンプレートクラスによって実装されますqueue(const queue &que);
//コンストラクタをコピーします
代入演算:
queue& operator=(const queue &que);
//equals演算子をオーバーロードします
データアクセス:
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;
}
要約:
- エンキュー—プッシュ
- デキュー-ポップ
- ヘッド要素を返します—フロント
- キューの最後にある要素を返します—戻る
- チームが空かどうかを判断します—空
- リターンキューサイズ—サイズ
来て!
ありがたい!
努力!