C++
 Computer >> コンピューター >  >> プログラミング >> C++

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
  1. 【C++ STL】map::operator[](添字演算子)の使い方とサンプルコード徹底解説

    この記事では、C++ STLのmap(マップ)コンテナで使われる添字演算子「[]」、すなわちmap::operator[]について、その仕組み・構文・具体的な使用例をわかりやすく解説します。C++ STLにおけるmapとは?mapは連想コンテナの一種で、「キー値」とそれに対応する「マップ値」の組み合わせからなる要素を、特定の順序で格納できるコンテナです。mapコンテナ内部のデータは、常に関連付けられたキーに基づいて自動的にソートされます。また、各要素には一意なキーが割り当てられており、このキーを通じて値へアクセスします。map::operator[]([]演算子)とは?map::operato

  2. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス