C++
 Computer >> コンピューター >  >> プログラミング >> C++

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()(逆順の終端)と組み合わせて使用することで、要素を簡単に逆順に処理できます。数値でも文字列でも同じ方法が使えるため、さまざまな場面で活用できる便利な機能です。

  1. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス

  2. C++のSTLを使ったDeque(両端キュー)の実装方法を解説

    両端キュー(Double Ended Queue、略称:Deque)は、キューの一種であり、先頭(front)と末尾(rear)の両端で要素の挿入・削除が行えるデータ構造です。通常のキューは片側から挿入し反対側から削除するだけですが、dequeは双方向からの操作に対応しているため、より柔軟なデータ管理が可能になります。 C++では、標準テンプレートライブラリ(STL)に <deque> ヘッダとして両端キューが標準搭載されているため、自前で実装しなくても手軽に利用できます。本記事では、STLのdequeを使用したメニュー形式の対話型プログラムを通じて、基本的な使い方を解説します。