C++ STLのlist::push_front()とlist::push_back()の使い方を徹底解説
本記事では、C++ STLにおけるlist::push_front()およびlist::push_back()関数の動作、構文、具体的な使用例について詳しく解説します。
STLにおけるlistとは?
listは、シーケンス内の任意の位置に対して定数時間で挿入・削除を行えるデータ構造です。listは双方向連結リスト(doubly linked list)として実装されており、非連続的なメモリ割り当てが可能です。そのため、配列やvector、dequeと比較して、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという欠点があります。なお、listはforward_listと類似していますが、forward_listは単方向連結リストであり、前方方向にしかイテレートできない点が異なります。
list::push_front()とは?
list::push_front()は、C++ STLに組み込まれた関数で、ヘッダーファイル内で宣言されています。この関数は、リストコンテナの先頭(冒頭)に要素を挿入するために使用します。新しい要素を先頭に追加すると、それまで先頭だった要素は2番目の要素となり、挿入した要素が新たな先頭要素になります。同時に、リストのサイズも1つ増加します。
構文
list_container1.push_front(type_t& value);
パラメータ
この関数は1つのパラメータを受け取ります。パラメータには、リストの先頭に挿入したい値を指定します。
戻り値
この関数は何も返しません(void型)。
例
入力: list<int> List_container = {10, 11, 13, 15};
List_container.push_front(9);
出力:
List = 9 10 11 13 15コード例
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> myList{};
myList.push_front(10);
myList.push_front(20);
myList.push_front(30);
myList.push_front(40);
myList.push_front(50);
myList.sort();
cout<<"Elements in the list are : ";
for (auto i = myList.begin(); i!= myList.end(); ++i)
cout << ' ' << *i;
}出力
上記のコードを実行すると、以下の出力が生成されます。
Elements in the list are : 10 20 30 40 50
list::push_back()とは?
list::push_back()も、C++ STLに組み込まれた関数で、同じくヘッダーファイル内で宣言されています。この関数は、リストコンテナの末尾に要素を挿入するために使用します。新しい要素を末尾に追加すると、それまで最後だった要素は後ろから2番目の要素となり、挿入した要素が新たな末尾要素になります。同時に、リストのサイズも1つ増加します。
構文
list_container1.push_back(type_t& value);
パラメータ
この関数は1つのパラメータを受け取ります。パラメータには、リストの末尾に挿入したい値を指定します。
戻り値
この関数は何も返しません(void型)。
例
入力: list<int> List_container = {10, 11, 13, 15};
List_container.push_back(9);
出力:
List = 10 11 13 15 9コード例
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> myList{};
myList.push_back(10);
myList.push_back(20);
myList.push_back(30);
myList.push_back(40);
myList.push_back(50);
myList.sort();
cout<<"Elements in the list are : ";
for (auto i = myList.begin(); i!= myList.end(); ++i)
cout << ' ' << *i;
}出力
上記のコードを実行すると、以下の出力が生成されます。
Elements in the list are : 10 20 30 40 50
-
【C++ STL】listのbegin()とend()関数の使い方を徹底解説
本記事では、C++のSTLにおけるlist begin()関数とlist end()関数の機能と具体的な使い方について解説します。STLにおけるlist(リスト)とはlistは、シーケンス内の任意の位置に対して定数時間での挿入・削除を可能にするデータ構造です。listは双方向連結リストとして実装されており、非連続的なメモリ割り当てが可能です。配列やvector、dequeと比較すると、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮するのが特徴です。その一方で、要素への直接アクセス(ランダムアクセス)は低速である点に注意が必要です。また、listはforwar
-
C++ STLのlistにおけるcrbegin()・crend()関数の使い方を解説
C++のSTL(標準テンプレートライブラリ)には、リストを逆方向に走査するための便利なメンバ関数が用意されています。本記事では、list::crbegin()とlist::crend()の2つの関数の動作について詳しく解説します。これらの関数はC++標準テンプレートライブラリの一部であり、使用するには<list>ヘッダーをインクルードする必要があります。list::crbegin()とはlist::crbegin()は、リストの逆先頭(つまりリストの末尾要素)を指す定数リバースイテレータを返します。この関数を使うと、リストを末尾から先頭へ向かって辿ることができますが、イテレータを通