std::cout 地图<string, int>

std::cout for map<string, int>

我有一张地图声明如下

map<string, int> symbolTable;


if(tempLine.substr(0,1) == "("){
            symbolTable.insert(pair<string, int>(tempLine, lineCount));
        }

如何 std::cout 我的符号 table 中的所有内容?

在现代 C++ 中:

for (auto&& item : symbolTable)
    cout << item.first << ": " << item.second << '\n';

如果您只能访问 C++11 之前的编译器,代码将是:

for ( map<string, int>::const_iterator it = symbolTable.begin(); it != symbolTable.end(); ++it)
    cout << it->first << ": " << it->second << '\n';

您可以使用循环打印所有 key/value 对。以下代码是 C++11

中的示例
for (const auto& kv : symbolTable) {
    std::cout << kv.first << " " << kv.second << '\n';
}

ps: 其他两个回答都很少关注const,挺悲催的。。。

如果您的编译器不兼容 C++11,这里有一个替代方案:

for (map<string, int>::iterator it = symbolTable.begin();
    it != symbolTable.end(); ++it)
{
    cout << it->first << " " << it->second << endl;
}

为了完整起见,如果是:

for (auto& s : symbolTable)
{
    cout << s.first << " " << s.second << endl;
}