std::map をループするにはどうすればいいですか? 質問する

std::map をループするにはどうすればいいですか? 質問する

map<string, int>文字列整数値やキーを一切知らなくても、内の各要素を反復処理したいと思います。

これまでに私が持っているもの:

void output(map<string, int> table)
{
       map<string, int>::iterator it;
       for (it = table.begin(); it != table.end(); it++)
       {
            //How do I access each element?  
       }
}

ベストアンサー1

これは次のようにして実現できます。

map<string, int>::iterator it;

for (it = symbolTable.begin(); it != symbolTable.end(); it++)
{
    std::cout << it->first    // string (key)
              << ':'
              << it->second   // string's value 
              << std::endl;
}

C++11 (以降)では、

for (auto const& x : symbolTable)
{
    std::cout << x.first  // string (key)
              << ':' 
              << x.second // string's value 
              << std::endl;
}

C++17 (以降)では、

for (auto const& [key, val] : symbolTable)
{
    std::cout << key        // string (key)
              << ':'  
              << val        // string's value
              << std::endl;
}

おすすめ記事