C++ STLのmap::at()関数とは?構文・使い方・実行例を徹底解説
本記事では、C++ STLにおけるmap::at()関数の動作・構文・具体的な使用例について詳しく解説します。
C++ STLにおけるmapとは?
mapは連想コンテナの一種で、「キー」と「マップされる値」の組み合わせからなる要素を、特定の順序で格納できるコンテナです。map内部のデータは常にキーに基づいて自動的にソートされており、各要素には一意なキーを介してアクセスします。
map::at()とは?
map::at()は、C++ STLに標準で組み込まれた関数で、<map>ヘッダー内で定義されています。at()はmapコンテナ内の特定の要素にアクセスするための関数であり、引数として渡したキーに関連付けられた値への参照を返します。
もし指定したキーがmapコンテナ内のどのキーとも一致しない場合、この関数はstd::out_of_range例外を送出します。そのため、キーの存在が保証されていない場面では、try-catchによる例外処理と組み合わせて使うのが安全です。
なお、添字演算子のoperator[]でも要素にアクセスできますが、operator[]はキーが存在しない場合に新しい要素を挿入してしまうのに対し、at()は例外を送出するだけで要素を追加しません。この違いを理解して適切に使い分けましょう。
構文
map_name.at(key& k);
パラメータ
この関数が受け取るパラメータは1つだけです。
- k:アクセスしたい要素のキー。このキーに関連付けられた値への参照が返されます。
戻り値
検索対象のキーkに関連付けられた値への参照を返します。
使用例
入力
std::map<char, int> mymap;
mymap.insert({'a', 10});
mymap.insert({'b', 20});
mymap.insert({'c', 30});
mymap.at('b');
出力
b:20
サンプルコード
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> TP_1;
map<int, int> TP_2;
TP_1[1] = 10;
TP_1[2] = 20;
TP_1[3] = 30;
TP_1[4] = 40;
TP_2[5] = 50;
TP_2[6] = 60;
TP_2[7] = 70;
cout << "TP_1.at(1) の値 = " << TP_1.at(1) << endl;
cout << "TP_1.at(2) の値 = " << TP_1.at(2) << endl;
cout << "TP_1.at(3) の値 = " << TP_1.at(3) << endl;
cout << endl;
cout << "TP_2.at(7) の値 = " << TP_2.at(7) << endl;
cout << "TP_2.at(5) の値 = " << TP_2.at(5) << endl;
return 0;
}
出力
TP_1.at(1) の値 = 10 TP_1.at(2) の値 = 20 TP_1.at(3) の値 = 30 TP_2.at(7) の値 = 70 TP_2.at(5) の値 = 50
-
【C++ STL】map::operator[](添字演算子)の使い方とサンプルコード徹底解説
この記事では、C++ STLのmap(マップ)コンテナで使われる添字演算子「[]」、すなわちmap::operator[]について、その仕組み・構文・具体的な使用例をわかりやすく解説します。C++ STLにおけるmapとは?mapは連想コンテナの一種で、「キー値」とそれに対応する「マップ値」の組み合わせからなる要素を、特定の順序で格納できるコンテナです。mapコンテナ内部のデータは、常に関連付けられたキーに基づいて自動的にソートされます。また、各要素には一意なキーが割り当てられており、このキーを通じて値へアクセスします。map::operator[]([]演算子)とは?map::operato
-
C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード
C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス