C++ STL ライブラリはマップ クラスを提供します。マップは、順序付けられたキー値とマップされた値のペアでオブジェクトを保持する連想コンテナーと見なされます。同じキー値を持つ 2 つのマップされた値が存在することはありません。 Map クラスは多くの機能を提供しますが、ここでは、 map.at() 関数。キー値にマップされた要素は、関数のパラメーターとして渡され、 map.at() 関数。コンテナの範囲内にない要素に到達しようとすると、 map.at() 関数はコンテナーの範囲を評価し、例外をスローします。
map.at() 関数の構文
C++ で map.at() 関数を実装するには、以下の構文に従う必要があります。
Map_variable.at ( 鍵 / 値のペア )
「Map_variable」という名前のマップ オブジェクトを使用しました。 で() 関数。直接参照され、指定されたキー値を指す要素を返します。データ キー マップは、主にマップの範囲に依存します。そうでない場合、実行時に、値が定義された範囲を超えていることを示す例外またはエラーが返される可能性があります。ここで、この構文を C++ コードで使用して、それが機能していることを示します。
例 1: map.at() 関数の使用
このプログラムは、map.at 関数のデモを行うために実装されています。をリンクしました で() との機能 地図() いくつかの入力値を取り、その機能を示す関数。このために、map モジュールを c++ に必要な別のモジュールでインポートすることにより、プログラムのヘッダー セクションを埋めました。次に、 主要() マップ クラスからのマップ宣言の関数。マップのオブジェクトには「MyMap」というラベルが付けられています。マップのキーと値を指定して、マップのリストを作成します。
この後、 map.at() 指定された文字列を整数にマップする関数。次に、結果を印刷しました map.at() for ループからの関数。 for ループは「auto」キーワード参照を使用します。 auto キーワードは、初期化子が変数の型を宣言されている型から自動的に削除することを示します。 cout ステートメントは、から返された順序でペアを出力します。 map.at() 関数。
#include#include <文字列>
#include <マップ>
int メイン ( )
std: :map < std::string,int > マイマップ = {
{ 'りんご'、 0 } 、
{ 「ぶどう」 、 0 } 、
{ 'マンゴー' 、 0 } }
MyMap.at ( 'りんご' ) = 5 ;
MyMap.at ( 「ぶどう」 ) = 10 ;
MyMap.at ( 'マンゴー' ) = 6 ;
為に ( 自動 & m:マイマップ ) {
std::cout << m.first << ':' << ミリ秒 << '\n' ; }
< 強い > 戻る 0 ;
}
これで、以下を実装する上記のプログラムの結果が得られました。 map.at() 関数。範囲内の指定されたすべての整数が各文字列に対して表示されます。
例 2: out_of_range 例外に対する map.at() 関数の使用
サンプルプログラムを通して、 map.at C++ の関数。今、私たちは別のものを実装しました map.at プログラムで。ただし、今回はマップ内に提示された値を返し、キーが指定されていない場合は out_of_range 例外も返します。を利用する必要があるため、 map.at 関数なので、ヘッダーに map モジュールを追加しました。次に、「void」がパラメーターとして渡されるメイン関数を定義しました。
メイン関数内で、マップ オブジェクトを「m1」として作成することにより、リスト コンストラクターを初期化しました。マップ リストには、さまざまなキーの文字列とそれらに対する整数値があります。次に、キー「i」を map.at 関数。 try-catch ブロックを採用しました。 try ブロックでは、存在しないキーを map.at 関数。キーが範囲外であるため、try ブロックはエラーをスローします。
#include#include <マップ>
名前空間 std を使用します。
int メイン ( 空所 ) {
地図 < 文字、整数 > m1 = {
{ 'l' 、 1 } 、
{ '私' 、 2 } 、
{ 「ん」 、 3 } 、
{ 'の' 、 4 } 、
{ 'バツ' 、 5 } 、
} ;
カウト << 'マップキー値 m1['i'] =' << m1.at ( '私' ) << エンドル;
試す {
m1.at ( 「よ」 ) ;
} キャッチ ( const out_of_range & と ) {
cerr << 'でエラー' << e.what ( ) << エンドル;
}
戻る 0 ;
}
出力スクリーンショットから、 map.at() 関数は、マップに存在するキーのみを返します。キー「y」を渡したときにエラーが表示されるため、範囲外のキーはエラーをスローします。 map.at 関数。
例 3: map.at() 関数を使用して要素にアクセスする
要素には、map.at 関数から指定された数字の要素を使用してアクセスできます。上記のステートメントを達成するために、このプログラムを実装しましょう。アクセスするために必要なため、ヘッダー セクションで最初に map モジュールを定義しました。 map.at 関数。次に、マップクラスがマップオブジェクトを「Map」として初期化したメイン関数があります。この「マップ」オブジェクトを使用して、文字列のキーを生成し、数字の値をそれらに割り当てました。その後、 map.at cout ステートメントを含む関数で、「Example」キーを入力として渡します。
#include#include <マップ>
#include <文字列>
名前空間 std を使用します。
int メイン ( )
{
地図 < 文字列、整数 > 地図;
地図 [ 'じぶんの' ] = 1 ;
地図 [ 'c++' ] = 2 ;
地図 [ '地図' ] = 3 ;
地図 [ '例' ] = 4 ;
カウト << Map.at ( '例' ) ;
戻る 0 ;
}
数字要素は、指定されたキーに対して返されます map.at 関数。この数字がマップのキー要素「例」に割り当てられているため、結果の値は「4」になります。
例 4: map.at() 関数を使用して要素を変更する
キー値に関連付けられた値を変更する単純な例を考えてみましょう。マップ クラスを呼び出してオブジェクト「M1」を作成することにより、マップのリストを作成しました。マップの各キーに対して文字列値を割り当てました。次に、 map.at 関数。の中に map.at 関数では、指定されたキーを使用し、それらのキーに対して新しい文字列値を割り当てました。ここで、これらの値は前の値で変更されます。 for ループの助けを借りて、マップから各要素を反復し、出力として表示しました。
#include#include <文字列>
#include <マップ>
名前空間 std を使用します。
int メイン ( )
{
地図 < 整数、文字列 > M1 = {
{ 10 、 'c++' } 、
{ 20 、 「ジャバ」 } 、
{ 30 、 「パイソン」 } 、
{ 40 、 'Cシャープ' } 、
{ 50 、 '開いた' } } ;
M1.at ( 20 ) = 「テンソルフロー」 ;
M1.at ( 30 ) = 「リナックス」 ;
M1.at ( 50 ) = 「スカラ」 ;
カウト << ' \n 要素:' << エンドル;
為に ( 自動 & ×:M1 ) {
カウト << x.最初 << ':' << x.秒 << '\n' ;
}
戻る 0 ;
}
出力として取得された値によって、新しく割り当てられた文字列値が変更されていることに注意してください。 map.at 関数。更新された値は、以下のスナップショットに示されています。
結論
この記事は map.at 関数に関するものです。 map.at() 関数の機能は構文によって提供されており、例は C++ コンパイラで実装されています。 map.at() 関数は、要素のアクセシビリティを可能にし、メソッドが呼び出されたときに発生した状況を説明する明確な例外またはエラーを返すため、非常に便利です。さらに、 map.at 関数を使用して、存在キーに対して新しい値を割り当てることができます。