C++ STLのdeque::rbegin()関数とは?逆順走査の使い方とサンプルコード
本記事では、C++ STLにおけるdeque(デキュー)のrbegin()関数の機能について、具体例を交えてわかりやすく解説します。
deque(デキュー)とは?
deque(Double Ended Queue:両端キュー)はシーケンスコンテナの一種で、先頭と末尾の両端に対して要素の挿入・削除を効率的に行えるコンテナです。一般的なキュー(待ち行列)のデータ構造では、データの挿入は「末尾」からのみ行い、削除は「先頭」からのみ行うというルールがあります。
例えば、バス停の行列をイメージすると分かりやすいでしょう。行列に並ぶ人は「末尾」から追加され、「先頭」にいる人から順に乗車して取り除かれます。一方、deque(両端キュー)では、この挿入と削除を先頭・末尾の両端で自由に行える点が大きな特徴です。
rbegin()関数とは?
rbegin()関数は、dequeの最後の要素を指す逆イテレータ(reverse iterator)を返す関数です。この逆イテレータを使って要素を順に辿ると、実際には末尾から先頭へ向かって走査が行われ、dequeを逆順に処理することができます。
構文: deque_name.rbegin()
戻り値: dequeの最後の要素を指す逆イテレータを返します。
使用例
入力: Deque − 10 9 8 7 6 5 4 3 2 1
出力: 逆順のDeque − 1 2 3 4 5 6 7 8 9 10
入力: Deque − G O L D E N
出力: 逆順のDeque − N E D L O G
処理の手順
- まずdequeを宣言します。
- 次に、元のdequeの内容を出力します。
- 続いて、rbegin()関数を使用します。
- 最後に、逆順に走査した結果を出力します。
上記の手順に従うことで、dequeを逆順に処理した結果を得ることができます。
サンプルコード1:整数のdeque
// C++ code to demonstrate the working of deque rbegin( ) function
#include <iostream>
#include <deque>
using namespace std;
int main() {
// dequeの初期化
deque<int> deq = { 5, 4, 0, 8, 5 };
// dequeの内容を出力
cout << "Deque: ";
for (auto x = deq.begin(); x != deq.end(); ++x)
cout << *x << " ";
// 逆順のdequeを出力
cout << "\nReversed deque: ";
for (auto x = deq.rbegin(); x != deq.rend(); ++x)
cout << " " << *x;
return 0;
}出力
上記のコードを実行すると、次のような出力が得られます。
入力 − Deque: 5 4 0 8 5 出力 − Reversed Deque: 5 8 0 4 5
サンプルコード2:文字のdeque
// C++ code to demonstrate the working of deque rbegin( ) function
#include <iostream>
#include <deque>
using namespace std;
int main() {
// dequeの初期化
deque<char> deq = { 'P', 'R', 'O', 'D', 'U', 'C', 'T' };
cout << "Deque: ";
for (auto x = deq.begin(); x != deq.end(); ++x)
cout << *x << " ";
// 逆順のdequeを出力
cout << "\nReversed deque: ";
for (auto x = deq.rbegin(); x != deq.rend(); ++x)
cout << " " << *x;
return 0;
}出力
上記のコードを実行すると、次のような出力が得られます。
入力 − Deque: P R O D U C T 出力 − Reversed deque: T C U D O R P
まとめ
rbegin()関数は、dequeの末尾から先頭へ向かって走査するための逆イテレータを取得するための関数です。rbegin()と対になるrend()(逆順の終端)と組み合わせて使用することで、要素を簡単に逆順に処理できます。数値でも文字列でも同じ方法が使えるため、さまざまな場面で活用できる便利な機能です。
-
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を使用したメニュー形式の対話型プログラムを通じて、基本的な使い方を解説します。