1. ホーム
  2. c++

[解決済み] findメソッド使用後にstd::mapを更新するには?

2022-12-30 21:01:24

質問

のキーの値を更新するにはどうしたらよいでしょうか。 std::map を使用した後 find メソッドを使用した後ですか?

こんな感じでマップとイテレータの宣言をしています。

map <char, int> m1;
map <char, int>::iterator m1_it;
typedef pair <char, int> count_pair;

マップを使って、文字の出現回数を保存しています。

Visual C++ 2010を使用しています。

どのように解決するのですか?

std::map::find は、見つかった要素へのイテレータを返します。 end() を返します。) そのため map が const でない限り、イテレータが指す要素を変更することができます。

std::map<char, int> m;
m.insert(std::make_pair('c', 0));  // c is for cookie

std::map<char, int>::iterator it = m.find('c'); 
if (it != m.end())
    it->second = 42;