C++ STLのlistにおける代入演算子「=」の使い方を徹底解説
本記事では、C++のSTLにおけるlistのoperator=(代入演算子)の機能と具体的な使い方について詳しく解説します。
STLにおけるlistとは?
listは、シーケンス内の任意の位置に対して定数時間での挿入・削除を可能にするコンテナです。内部的には双方向リンクリストとして実装されており、非連続的なメモリ割り当てを行う点が大きな特徴です。
listは、配列やvector、dequeと比較して、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという弱点もあります。また、listはforward_listと似ていますが、forward_listは単方向リンクリストであり、前方方向にしかイテレートできない点が異なります。
operator= の用途とは?
この演算子は、既存の要素を置き換える形で、別のリストの新しい要素をリストに代入するために使用されます。代入後は、内容に応じて新しいリストのサイズが自動的に調整されます。なお、代入元となるコンテナは、代入先のコンテナと同じデータ型である必要があります。
構文:listname1 = listname2
使用例
入力 List1: 50 60 80 90
List2: 90 80 70 60
出力 List1: 90 80 70 60
入力 List1: E N E R G Y
List2: C A P T I O N
出力 List1: C A P T I O N基本的なアプローチ
まず、2つのリストを初期化します。
次に、= 演算子を使用します。
最後に、新しいリストの内容を出力します。
上記のアプローチにより、リストに新しい要素を代入することができます。この演算子の動作はswap()関数に似ていますが、swap()とは異なり、list2の内容をlist1に代入するだけで、list1の元の内容がlist2側へ移ることはありません。つまり、一方向的な内容の置き換えが行われます。
サンプルコード1:int型のlist
// STLにおけるlistの=演算子の動作を示すC++コード
#include<iostream>
#include<list>
using namespace std;
int main() {
// 2つのリストを初期化
list<int> list1 = { 10, 20, 30, 40, 50 };
cout << "List1: ";
for (auto x = list1.begin(); x != list1.end(); ++x)
cout << *x << " ";
list<int> list2 = { 40, 50, 60, 70, 80 };
cout << "\nList2: ";
for (auto x = list2.begin(); x != list2.end(); ++x)
cout << *x << " ";
list1 = list2;
// 新しいリストの内容を出力
cout << "\nList1の新しい内容: ";
for (auto x = list1.begin(); x != list1.end(); ++x)
cout << *x << " ";
return 0;
}出力
上記のコードを実行すると、以下の出力が生成されます。
List1: 10 20 30 40 50 List2: 40 50 60 70 80 List1の新しい内容: 40 50 60 70 80
サンプルコード2:char型のlist
// STLにおけるlistの=演算子の動作を示すC++コード
#include<iostream>
#include<list>
using namespace std;
int main() {
// 2つのリストを初期化
list<char> list1 = { 'C', 'H', 'A', 'R', 'G', 'E', 'R' };
cout << "List1: ";
for (auto x = list1.begin(); x != list1.end(); ++x)
cout << *x << " ";
list<char> list2 = { 'P', 'O', 'I', 'N', 'T' };
cout << "\nList2: ";
for (auto x = list2.begin(); x != list2.end(); ++x)
cout << *x << " ";
list1 = list2;
// 新しいリストの内容を出力
cout << "\nList1の新しい内容: ";
for (auto x = list1.begin(); x != list1.end(); ++x)
cout << *x << " ";
return 0;
}出力
上記のコードを実行すると、以下の出力が生成されます。
List1: C H A R G E R List2: P O I N T List1の新しい内容: P O I N T
-
C++ STLのlist::reverse()関数の使い方と実例解説
本記事では、C++におけるlist::reverse()関数の動作、構文、具体的な使用例について詳しく解説します。STLにおけるlistとはlistは、シーケンス内の任意の位置で定数時間O(1)での要素の挿入・削除を可能にするデータ構造です。listは双方向連結リストとして実装されており、メモリの非連続的な割り当てが可能です。配列、vector、dequeと比較すると、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。listはforward_listと似ていますが、forwar
-
C++STLのlist back()関数の使い方を解説
C++のlist back()関数とは本記事では、C++におけるlist back()関数の動作について詳しく解説します。list::back()関数は、C++標準テンプレートライブラリ(STL)の一部であり、リストの最後(末尾)の要素を取得・表示するために使用されます。この関数を呼び出す前に、必ず<list>ヘッダーファイルをインクルードする必要がある点に注意してください。構文List_Name.back();パラメータこの関数は、いかなるパラメータも受け取りません。戻り値この関数は、リストの最後の要素の値を返します。なお、リストが空の場合の動作は未定義となるため、呼び出し前にリ