パフォーマンスが重要でないコードで多くのマップにアクセスしています。欠落しているキーをチェックするために、通常の find/!=end を常に記述したくありません。また、盲目的に [] を使用してデフォルト値を取得したくありません。次のラッパー関数は賢いですか、それとも愚かですか? もっと簡単な方法はありますか?私が考慮しなかった副作用はありますか?
template<typename M>
static typename M::mapped_type getMapValue(const M& m, typename M::key_type key) {
typename M::const_iterator it = m.find(key);
if (it != m.end()) {
return it->second;
} else {
std::cerr << "Key: " << key << " not found!" << std::endl;
std::cerr << "Returning default value." << std::endl;
return typename M::mapped_type();
}
}