C++ STLのdeque::push_front()関数を徹底解説!使い方と実行例
本記事では、C++ STLに用意されているdeque::push_front()関数について、その動作・構文・具体的な使用例をわかりやすく解説します。
Deque(両端キュー)とは?
Dequeは「Double Ended Queue(両端キュー)」の略で、コンテナの先頭と末尾の両方で要素の追加・削除が可能なシーケンスコンテナです。
通常のキュー(queue)データ構造では、データの挿入は末尾からのみ、削除は先頭からのみ行えます。バス停の行列をイメージすると分かりやすいでしょう。新しい人は列の後ろ(END)に並び、先頭(FRONT)にいる人から順に乗車して列から外れていきます。
一方、両端キューであるdequeでは、データの挿入と削除を両端のどちらでも自由に行うことができる点が大きな特徴です。
deque::push_front()とは?
deque::push_front()は、C++ STLに組み込まれた関数で、ヘッダーファイル<deque>内で宣言されています。
この関数は、dequeコンテナの先頭(先頭要素の手前)に新しい要素を挿入するために使用されます。挿入された要素は、そのdequeの最初の要素となります。
引数として受け取るのは1つだけで、先頭に挿入したい要素そのものです。
構文
mydeque.push_front(const value_type& value);
引数には、先頭に挿入したい要素を1つ指定します。
戻り値
この関数は何も返しません(void型)。
使用例
入力: deque<int> mydeque = {10, 20, 30, 40};
mydeque.push_front(9);
出力:
Deque elements: 9 10 20 30 40
入力: deque<int> mydeque;
mydeque.push_front(5);
出力: 5
サンプルコード①:先頭への要素追加
#include <deque>
#include <iostream>
using namespace std;
int main(){
deque<int> Deque = { 20, 30, 40, 50 };
Deque.push_front(10);
cout<<"Elements in Deque are : ";
for(auto i = Deque.begin(); i!= Deque.end(); ++i)
cout << ' ' << *i;
}
出力結果
上記のコードを実行すると、以下の出力が得られます。
Elements in Deque are : 10 20 30 40 50
初期状態で{20, 30, 40, 50}だったdequeに対してpush_front(10)を実行したため、10が先頭に追加され、全要素が「10 20 30 40 50」となっています。
サンプルコード②:push_frontとpop_frontの組み合わせ
#include <deque>
#include <iostream>
using namespace std;
int main(){
int total = 0;
deque<int> Deque;
Deque.push_front(10);
Deque.push_front(20);
Deque.push_front(30);
Deque.push_front(40);
while (!Deque.empty()){
total++;
Deque.pop_front();
}
cout<<"Total number of elements in a deque are : "<<total;
return 0;
}
出力結果
上記のコードを実行すると、以下の出力が得られます。
Total number of elements in a deque are : 4
この例では、push_front()を使って10、20、30、40の順に4つの要素を先頭へ挿入しています。その後、whileループ内でpop_front()により先頭要素を順番に取り除きながらカウントすることで、deque内の要素数(4個)を求めています。
まとめ
deque::push_front()は、両端キューの先頭に要素を効率よく追加できる便利な関数です。計算量はO(1)で一定であり、先頭への頻繁な挿入が必要な場面でvectorよりもdequeが選ばれる大きな理由の一つとなっています。対になる末尾への追加関数push_back()や、先頭要素を削除するpop_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を使用したメニュー形式の対話型プログラムを通じて、基本的な使い方を解説します。