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

C++ STLのlistから要素を削除する方法|pop_front()とpop_back()の使い方


はじめに

このチュートリアルでは、C++ STLのstd::listコンテナから要素を削除する方法について詳しく解説します。

要素の削除には、リストの先頭の要素を取り除く pop_front() 関数と、末尾の要素を取り除く pop_back() 関数を使用します。

pop_front() と pop_back() の概要

  • pop_front():リストの先頭にある要素を削除します
  • pop_back():リストの末尾にある要素を削除します

どちらの関数も計算量は O(1) と非常に高速に動作します。ただし、戻り値は void 型であるため、削除した要素の値を直接取得することはできません。また、空のリストに対して呼び出すと未定義動作となるため、事前に empty() 関数でリストが空でないか確認しておくと安全です。

サンプルコード

#include<iostream>
#include<list>
using namespace std;
int main(){
    list<int>list1={10,15,20,25,30,35};
    cout << "The original list is : ";
    for (list<int>::iterator i=list1.begin(); i!=list1.end();i++)
    cout << *i << " ";
    cout << endl;
    // 先頭の要素を削除
    list1.pop_front();
    cout << "The list after deleting first element using pop_front() : ";
    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
    cout << *i << " ";
    cout << endl;
    // 末尾の要素を削除
    list1.pop_back();
    cout << "The list after deleting last element using pop_back() : ";
    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
    cout << *i << " ";
    cout << endl;
}

実行結果

The original list is : 10 15 20 25 30 35
The list after deleting first element using pop_front() : 15 20 25 30 35
The list after deleting last element using pop_back() : 15 20 25 30

コードの解説

まず、初期化子リストを使って {10, 15, 20, 25, 30, 35} の6つの整数を持つリストを作成し、イテレータを使って全要素を表示しています。

その後、pop_front() を呼び出すことで先頭の「10」が削除され、続いて pop_back() を呼び出すことで末尾の「35」が削除されていることが、出力結果から確認できます。

補足:その他の削除方法

先頭や末尾以外の要素を削除したい場合は、以下のようなメンバ関数も活用できます。

  • erase(iterator):指定したイテレータの位置にある要素を削除
  • remove(value):指定した値と一致するすべての要素を削除
  • clear():リスト内のすべての要素を一括削除

  1. C++ STLのlist::reverse()関数の使い方と実例解説

    本記事では、C++におけるlist::reverse()関数の動作、構文、具体的な使用例について詳しく解説します。STLにおけるlistとはlistは、シーケンス内の任意の位置で定数時間O(1)での要素の挿入・削除を可能にするデータ構造です。listは双方向連結リストとして実装されており、メモリの非連続的な割り当てが可能です。配列、vector、dequeと比較すると、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。listはforward_listと似ていますが、forwar

  2. C++でSTLのlist(リスト)を操作するプログラムの実装方法

    std::listは、非連続(連続していない)メモリ領域への要素配置を許容するシーケンスコンテナです。vectorと比較すると要素の走査はやや遅いものの、目的の位置さえ特定できれば、そこへの挿入・削除が非常に高速に行える点が大きな特徴です。内部は双方向リンクリストとして実装されており、先頭・末尾への追加や削除も定数時間で処理できます。 使用する主なメンバ関数 本プログラムでは、main() 関数から以下のメンバ関数を呼び出しています。 l.resize()      = リストのサイズを変更します。 l.push_front()&n