【C++ STL】map::size()関数の使い方と実行例をわかりやすく解説
本記事では、C++ STLにおけるmap::size()関数の動作、構文、そして具体的な使用例について詳しく解説します。
C++ STLのmapとは?
mapは連想コンテナ(associative container)の一種で、キーとマップされた値(mapped value)の組み合わせからなる要素を、特定の順序で格納できるコンテナです。mapコンテナ内部のデータは、常にキーに基づいて自動的にソートされ、各要素には一意のキーを通じてアクセスします。
map::size()とは?
map::size()は、C++ STLに標準で用意されている組み込み関数で、<map>ヘッダーファイル内で定義されています。size()関数を使うことで、対象のmapコンテナに格納されている要素の数(サイズ)を取得できます。
構文
map_name.size();
パラメータ
この関数は引数(パラメータ)を受け取りません。
戻り値
mapコンテナ内の要素数を返します。コンテナが空の場合は0を返します。
使用例
入力例1
std::map<char, int> mymap;
mymap.insert({'a', 10});
mymap.insert({'b', 20});
mymap.insert({'c', 30});
mymap.size();出力
3
入力例2(空のコンテナの場合)
std::map<int, int> mymap; mymap.size();
出力
0
サンプルプログラム1
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> TP_1;
TP_1[1] = 10;
TP_1[2] = 20;
TP_1[3] = 30;
TP_1[4] = 40;
cout<<"Size of TP_1 is: "<<TP_1.size();
return 0;
}出力
Size of TP_1 is: 4
このプログラムでは、mapコンテナTP_1に4つの要素を挿入しているため、size()関数は4を返します。
サンプルプログラム2
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> TP_1;
TP_1[1] = 10;
TP_1[2] = 20;
TP_1[3] = 30;
TP_1[4] = 40;
auto size = TP_1.size();
auto temp = 1;
while(size!=0) {
temp = temp * 10;
size--;
}
cout<<"Temp value is: "<<temp<<endl;
return 0;
}出力
Temp value is: 10000
この例では、size()の戻り値(要素数4)を利用してwhileループを回しています。ループは要素数と同じ回数だけ繰り返されるため、初期値1に10が4回掛けられ、結果として10000が出力されます。
まとめ
map::size()は、mapコンテナの要素数を定数時間O(1)で取得できる便利な関数です。コンテナが空の場合は0を返すため、空かどうかの判定にも利用できます。ただし、空判定のみを行いたい場合は、empty()関数を使う方がコードの意図が明確になります。
-
C++ STLのセット(set)とマップ(map)とは?違いと基本的な使い方を解説
セット(std::set)とは セット(Set)は抽象データ型の一種で、要素の値そのものが識別子として機能するため、すべての要素が一意である必要があります。一度セットに追加した要素の値を直接変更することはできませんが、該当する要素を削除してから、変更後の値を新たに挿入し直すことは可能です。 マップ(std::map)とは マップ(Map)は、要素を「キー」と「値」のペアとして格納する連想コンテナです。各要素はキー値(key)とマップ値(mapped value)を持ち、同一のキー値を持つ要素が複数存在することはありません。 以上の説明から、両者の違いは次のように整理できます。 セット:
-
STLのマップ(map)を実装するC++プログラムの書き方
マップ(map)とはマップは、要素をキーと値のペアとして対応付けて格納する連想コンテナです。各要素はキー値とマップ値を持ち、同じキー値を持つ要素が複数存在することはありません。使用する主なメンバ関数m::find() – マップ内に指定したキー値(b)を持つ要素が見つかれば、その要素へのイテレータを返します。見つからない場合はend()へのイテレータを返します。m::erase() – マップから指定したキー値の要素を削除します。m::equal_range() – ペア(pair)のイテレータを返します。このペアは、指定したキーと等価なキーを持つコンテナ内のすべての要素を含む範囲の境界を表し