[プログラミングを改善するためのC++]STL-スタック&キューコンテナ(3)

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;
}

要約:

  • エンキュー—プッシュ
  • デキュー-ポップ
  • ヘッド要素を返します—フロント
  • キューの最後にある要素を返します—戻る
  • チームが空かどうかを判断します—空
  • リターンキューサイズ—サイズ

来て!

ありがたい!

努力!

おすすめ

転載: blog.csdn.net/qq_46092061/article/details/123730190