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

C++ STLにおけるdeque clear()とdeque erase()の使い方を解説


この記事では、C++ STLにおけるdeque(デック)のclear()関数とerase()関数の機能について、サンプルコードを交えながら解説します。

Deque(デック)とは

Deque(Double Ended Queue、双方向キュー)は、両端での要素の追加と削除を可能にするシーケンスコンテナです。通常のキュー(queue)データ構造では、データの挿入は末尾からのみ行い、削除は先頭からのみ行います。バス停の行列を例に考えてみましょう。行列に加わる人は必ず末尾から並び、先頭にいる人から順に乗車して行列から外れていきます。一方、双方向キュー(deque)では、両端のどちらからでもデータの挿入と削除が可能です。

deque.clear()とは

clear()関数は、deque内のすべての要素を削除し、サイズを0にするために使用されます。

構文

dequename.clear( )

使用例

入力 Deque − 96 97 98 100

出力 Deque − 空(empty)

入力 Deque − 1 2 3 4 5 6

出力 Deque − 空(empty)

実行手順

  • まず、dequeを宣言します。

  • 次に、dequeの内容を出力します。

  • その後、clear()関数を呼び出して全要素を削除します。

上記の手順に従うことで、dequeのすべての要素を一括で削除できます。

サンプルコード

// deque.clear()関数の動作を示すC++コード
#include<iostream>
#include<deque>
using namespace std;
int main() {
    // dequeの初期化
    deque<int> dq = { 85, 87, 88, 89, 90 };
    // dequeの内容を出力
    cout << "Deque: ";
    for (auto x = dq.begin(); x != dq.end(); ++x)
        cout << *x << " ";
    // clear()関数の呼び出し
    dq.clear();
    // 削除後のdequeを出力
    cout << "\nNew Deque: ";
    for (auto x = dq.begin(); x != dq.end(); ++x)
        cout << " " << *x;
    return 0;
}

出力結果

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

入力 - Deque: 85 87 88 89 90
出力 - New Deque: (出力なし・空)

deque.erase()とは

erase()関数は、dequeから指定した位置、または指定した範囲の要素を削除するために使用されます。clear()がすべての要素を削除するのに対し、erase()は特定の要素だけを削除したい場合に便利です。

構文

dequename.erase(iterator position)
dequename.erase(iterator first, iterator last)

サンプルコード

// deque.erase()関数の動作を示すC++コード
#include<iostream>
#include<deque>
using namespace std;
int main() {
    // dequeの初期化
    deque<int> dq = { 1, 2, 3, 4, 5 };
    // dequeの内容を出力
    cout << "Deque: ";
    for (auto x = dq.begin(); x != dq.end(); ++x)
        cout << *x << " ";
    // 先頭の要素を削除
    dq.erase(dq.begin());
    // 削除後のdequeを出力
    cout << "\nNew Deque: ";
    for (auto x = dq.begin(); x != dq.end(); ++x)
        cout << *x << " ";
    return 0;
}

出力結果

入力 - Deque: 1 2 3 4 5
出力 - New Deque: 2 3 4 5

clear()とerase()の違い

  • clear():dequeのすべての要素を削除し、サイズを0にします。

  • erase():指定した位置や範囲の要素のみを削除し、残りの要素はそのまま保持されます。

用途に応じて使い分けることで、dequeをより効率的に操作できます。


  1. C++ STLのdeque::push_back()関数の使い方を徹底解説

    C++ STLにおけるdequeのpush_back()関数の機能と具体的な使い方について、構文やパラメータ、サンプルコードを交えながら詳しく解説します。 deque(デック)とは dequeは「Double Ended Queue(両端キュー)」の略称で、コンテナの両端から要素の追加・削除が可能なシーケンスコンテナです。 通常のキュー(queue)データ構造では、データの挿入は末尾からのみ、削除は先頭からのみ行えます。バス停の行列をイメージすると分かりやすいでしょう。行列に人は末尾からしか加わらず、先頭にいる人から順番に乗車していきます。一方、dequeではこの挿入と削除が両端のどちらからで

  2. C++ STLのdeque::resize()関数の使い方と動作を徹底解説

    この記事では、C++ STLにおけるdeque(デック)のresize()関数の機能と具体的な使い方について、サンプルコードと実行結果を交えながら詳しく解説します。deque(両端キュー)とはdequeは「Double Ended Queue(両端キュー)」の略で、シーケンスコンテナの一種です。先頭と末尾の両端から要素の追加・削除ができる点が最大の特徴です。通常のキュー(queue)データ構造では、データの挿入は末尾からのみ行い、削除は先頭からのみ行います。バス停の行列をイメージすると分かりやすいでしょう。新しい人は列の末尾に並び、先頭にいる人から順に乗車して列から外れていきます。一方、deq