地図から値を取得する方法を教えてください。
2023-08-14 09:17:21
質問
私は
map
という名前の
valueMap
を次のようにします。
typedef std::map<std::string, std::string>MAP;
MAP valueMap;
...
// Entering data.
そして、このマップを関数に参照渡ししています。
void function(const MAP &map)
{
std::string value = map["string"];
// By doing so I am getting an error.
}
関数への参照として渡されるmapから値を取得するにはどうしたらよいでしょうか。
どのように解決するのですか?
std::map::operator[]
はconstでないメンバ関数であり、constの参照を持っています。
のシグネチャを変更する必要があるか
function
を行うかです。
MAP::const_iterator pos = map.find("string");
if (pos == map.end()) {
//handle the error
} else {
std::string value = pos->second;
...
}
operator[]
はデフォルトで構成された値をマップに追加し、それへの参照を返すことで、エラーを処理します。これはconstの参照しかない場合には使い物にならないので、別の方法をとる必要があります。
あなたは
は
可能性を無視して
string value = map.find("string")->second;
と書くこともできますが、もしあなたのプログラムロジックが
"string"
がすでにキーであることが保証されている場合。明らかな問題は、もしあなたが間違っていれば、未定義の動作が発生することです。
関連
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】静的なMapを初期化する方法は?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】'cout'は型名ではない
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】C++の余分な資格エラー
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む