C++ STLのdeque::push_back()関数の使い方を徹底解説
C++ STLにおけるdequeのpush_back()関数の機能と具体的な使い方について、構文やパラメータ、サンプルコードを交えながら詳しく解説します。
deque(デック)とは
dequeは「Double Ended Queue(両端キュー)」の略称で、コンテナの両端から要素の追加・削除が可能なシーケンスコンテナです。
通常のキュー(queue)データ構造では、データの挿入は末尾からのみ、削除は先頭からのみ行えます。バス停の行列をイメージすると分かりやすいでしょう。行列に人は末尾からしか加わらず、先頭にいる人から順番に乗車していきます。一方、dequeではこの挿入と削除が両端のどちらからでも可能になっています。
deque::push_back()関数とは
push_back()関数は、新しい要素をdequeの末尾(後端)に挿入するために使用されるメンバ関数です。計算量は償却定数時間O(1)であり、非常に効率的に動作します。
構文
dequename.push_back(value)
パラメータ
value − dequeの末尾に挿入する新しい要素を指定します。追加する要素は、dequeと同じデータ型である必要があります。
使用例
入力:Deque − 45 46 47 48 49
出力:新しいDeque − 45 46 47 48 49 50
入力:Deque − B L A N K E T
出力:新しいDeque − B L A N K E T S
処理の手順
まず、dequeを宣言して初期化します。
次に、現在のdequeの内容を出力します。
その後、push_back()関数を呼び出して新しい要素を末尾に追加します。
この手順に従うことで、dequeの末尾へ簡単に新しい要素を挿入できます。
サンプルコード1:整数型のdeque
// deque::push_back()関数の動作を示すC++コード
#include <iostream>
#include <deque>
using namespace std;
int main() {
// dequeの初期化
deque<int> dq = { 71, 75, 73, 76, 77 };
// dequeの内容を出力
cout << "Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
// push_back()関数で新しい要素を追加
dq.push_back(78);
// 追加後のdequeを出力
cout << "\nNew Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
return 0;
}
出力結果
上記のコードを実行すると、以下の出力が得られます。
Input - Deque: 71 75 73 76 77 Output - New Deque: 71 75 73 76 77 78
78がdequeの末尾に正しく追加されていることが確認できます。
サンプルコード2:別の整数値での例
// deque::push_back()関数の動作を示すC++コード
#include <iostream>
#include <deque>
using namespace std;
int main() {
// dequeの初期化
deque<int> dq = { 64, 65, 66, 69, 68 };
cout << "Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
// push_back()関数で新しい要素を追加
dq.push_back(67);
// 追加後のdequeを出力
cout << "\nNew Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
return 0;
}
出力結果
上記のコードを実行すると、以下の出力が得られます。
Input: 64 65 66 69 68 Output: 64 65 66 69 68 67
まとめ
push_back()関数は、dequeの末尾に新しい要素を追加するための基本的かつ重要なメンバ関数です。int型だけでなくchar型やstring型など、さまざまなデータ型に対して同様に使用できます。両端への操作が可能なdequeの特性を活かし、push_back()(末尾への追加)とpush_front()(先頭への追加)を組み合わせることで、柔軟なデータ管理が実現できます。
-
C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード
C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス
-
C++のSTLを使ったDeque(両端キュー)の実装方法を解説
両端キュー(Double Ended Queue、略称:Deque)は、キューの一種であり、先頭(front)と末尾(rear)の両端で要素の挿入・削除が行えるデータ構造です。通常のキューは片側から挿入し反対側から削除するだけですが、dequeは双方向からの操作に対応しているため、より柔軟なデータ管理が可能になります。 C++では、標準テンプレートライブラリ(STL)に <deque> ヘッダとして両端キューが標準搭載されているため、自前で実装しなくても手軽に利用できます。本記事では、STLのdequeを使用したメニュー形式の対話型プログラムを通じて、基本的な使い方を解説します。