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

C++ STLのdeque max_size()関数とは?使い方とサンプルコードを解説

本記事では、C++ STLにおけるdequeのmax_size()関数の機能と使い方について詳しく解説します。

Deque(両端キュー)とは?

Dequeは「Double Ended Queue(両端キュー)」の略で、コンテナの先頭と末尾の両方から要素の追加・削除が可能なシーケンスコンテナです。

通常のキュー(待ち行列)データ構造では、データの挿入は末尾からのみ、削除は先頭からのみ行えます。バス停の行列をイメージすると分かりやすいでしょう。新しく来た人は列の「後ろ」に並び、列の「先頭」にいる人から順に乗車していきます。

一方、両端キュー(Deque)では、先頭と末尾のどちら側からでも自由にデータを挿入・削除できる点が大きな特徴です。

deque max_size()関数とは?

max_size()関数は、dequeが保持できる要素の最大数を取得するために使用されます。

構文

dequename.max_size()

戻り値: dequeが保持できる要素の最大数を返します。

実行例

入力Deque: 12 13 14 15 16
出力 最大サイズ: 4611686018427387903

入力Deque: F O R C E
出力 最大サイズ: 4611686018427387903

処理の手順

  • まず、dequeを宣言します。
  • 次に、dequeの内容を出力します。
  • 最後に、max_size()を使ってdequeの最大サイズを確認します。

上記の手順に従うことで、dequeの最大サイズを簡単に確認できます。

サンプルコード1

// deque max_size() 関数の動作を示すC++コード
#include <iostream>
#include <deque>
using namespace std;

int main() {
    // dequeの初期化
    deque<int> d = { 11, 12, 13, 14, 15 };

    // dequeの出力
    cout << "Deque: ";
    for (auto x = d.begin(); x != d.end(); ++x)
        cout << *x << " ";

    // 最大サイズの表示
    cout << "\ndequeの最大サイズ: " << d.max_size();

    return 0;
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

Deque: 11 12 13 14 15
dequeの最大サイズ: 4611686018427387903

サンプルコード2

// deque max_size() 関数の動作を示すC++コード
#include <iostream>
#include <deque>
using namespace std;

int main() {
    // dequeの初期化
    deque<int> d = { 14, 15, 16, 17, 18, 19, 20 };

    // dequeの出力
    cout << "Deque: ";
    for (auto x = d.begin(); x != d.end(); ++x)
        cout << *x << " ";

    // 最大サイズの表示
    cout << "\ndequeの最大サイズ: " << d.max_size();

    return 0;
}

出力結果

このコードを実行すると、次のような出力が生成されます。

Deque: 14 15 16 17 18 19 20
dequeの最大サイズ: 4611686018427387903

補足:max_size()の値について

max_size()が返す値は、使用しているシステムのアーキテクチャや標準ライブラリの実装によって異なります。一般的な64ビット環境では、上記のように 4611686018427387903(262 − 1)といった非常に大きな値が返されることが多いです。

ただし、この値はあくまで理論上の上限であり、実際にその数の要素を格納できることを保証するものではありません。利用可能なメモリ量によって、実際に確保できるサイズは制限される点に注意しましょう。

  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を使用したメニュー形式の対話型プログラムを通じて、基本的な使い方を解説します。