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;
}
我有一张地图声明如下
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;
}