C++ STLのdeque::begin()とdeque::end()の使い方を徹底解説
本記事では、C++ STLにおけるdeque::begin()およびdeque::end()関数の動作、構文、具体的な使用例について詳しく解説します。
デック(Deque)とは?
デック(Deque:Double Ended Queue、両端キュー)は、両端での要素の追加・削除が可能なシーケンスコンテナです。通常のキュー(待ち行列)データ構造では、データの挿入は末尾からのみ行い、削除は先頭からのみ行います。バス停の行列をイメージすると分かりやすいでしょう。行列に人は末尾からしか加わらず、先頭にいる人から順に乗車していきます。一方、両端キューでは、データの挿入も削除も両端のどちらからでも可能です。
deque::begin()とは?
deque::begin()はC++ STLに組み込まれた関数で、<deque>ヘッダーファイル内で宣言されています。この関数は、呼び出し元のdequeコンテナの最初の要素を参照するイテレータを返します。begin()とend()は、どちらもdequeコンテナを走査(イテレート)するために使用されます。
構文
mydeque.begin();
パラメータ
この関数はパラメータを受け取りません。
戻り値
dequeコンテナの最初の要素を指すイテレータを返します。
使用例
Input: deque<int> mydeque = {10, 20, 30, 40};
mydeque.begin();
Output:
Element at the beginning is =10コード例
#include <deque>
#include <iostream>
using namespace std;
int main(){
deque<int> Deque = {2, 4, 6, 8, 10 };
cout<<"Elements are : ";
for (auto i = Deque.begin(); i!= Deque.end(); ++i)
cout << ' ' << *i;
return 0;
}出力
上記のコードを実行すると、次のような出力が生成されます。
Elements are : 2 4 6 8 10
deque::end()とは?
deque::end()もC++ STLに組み込まれた関数で、<deque>ヘッダーファイル内で宣言されています。この関数は、呼び出し元のdequeコンテナの最後の要素の「次」を参照するイテレータを返します。つまり、返されるイテレータが指す位置には有効な要素は存在しません。begin()とend()を組み合わせることで、dequeコンテナ全体を走査できます。
構文
mydeque.end();
パラメータ
この関数はパラメータを受け取りません。
戻り値
dequeコンテナの最後の要素の次の位置を指すイテレータを返します。
使用例
Input: deque<int> mydeque = {10, 20, 30, 40};
mydeque.end();
Output:
Element at the ending is =5 //最後の要素の次を示すランダムな値コード例
#include <deque>
#include <iostream>
using namespace std;
int main(){
deque<int> Deque = { 10, 20, 30, 40};
cout<<"Elements are : ";
for (auto i = Deque.begin(); i!= Deque.end(); ++i)
cout << ' ' << *i;
return 0;
}出力
上記のコードを実行すると、次のような出力が生成されます。
Elements are : 10 20 30 40
まとめ
deque::begin()はコンテナの先頭要素へのイテレータを、deque::end()は末尾要素の次の位置へのイテレータを返します。この2つの関数を組み合わせた範囲ベースのループ処理は、C++でdequeの全要素にアクセスする際の基本的かつ重要なテクニックです。なお、end()が返すイテレータは逆参照(dereference)できない点に注意してください。
-
C++ STLのvector::begin()とvector::end()の使い方を徹底解説
C++のSTL(標準テンプレートライブラリ)におけるvector::begin()およびvector::end()は、ベクター内の要素を走査するために欠かせないメンバ関数です。本記事では、それぞれの役割と実際のコード例を通じて、その使い方をわかりやすく解説します。 vector::begin() とは vector::begin()は、コンテナ(ベクター)の先頭要素を指すイテレータを返す双方向イテレータ用の関数です。この戻り値を使うことで、ベクターの最初の要素から順番にアクセスすることができます。 vector::end() とは vector::end()は、コンテナの末尾(最後の要素の次の
-
【C++ STL】set::begin()とset::end()の使い方をサンプルコードで解説
C++のSTLコンテナであるstd::setには、要素を走査するための重要なメンバ関数としてbegin()とend()があります。 set::begin()は双方向イテレータの一種で、setコンテナの先頭要素を指すイテレータを返します。setは自動的に要素が昇順にソートされるため、begin()が指すのは常に最小の値を持つ要素です。 set::end()も同様に双方向イテレータを返しますが、こちらは最後の要素そのものではなく、最後の要素の「次」の位置(終端)を指す点に注意が必要です。つまり、end()が返すイテレータは有効な要素を参照しておらず、主にループの終了条件として使用されます。 サンプ