自动,错误:MAP ITERATOR没有名为“ First”的成员

auto, error: map iterator has no member named ‘first`

本文关键字:First 成员 错误 MAP ITERATOR 自动      更新时间:2023-10-16
map<string, int> M;
for (auto E: M) 
{ 
    cout << E.first << ": " << E.second << endl; 
    F << E.first << ": " << E.second << endl; 
}; 

我正在学习C ,我与自动感到困惑。我正在尝试将上述代码转换为以下代码(上面具有自动工作的代码正确(

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

我有以下错误:

 error: ‘std::map<std::basic_string<char>, int>::iterator’ has no member named ‘first’
     cout << p.first << ": " << p.second << endl;
 error: ‘std::map<std::basic_string<char>, int>::iterator’ has no member named ‘second’
     cout << p.first << ": " << p.second << endl;
 error: ‘std::map<std::basic_string<char>, int>::iterator’ has no member named ‘first’
     F << p.first << ": " << p.second << endl;
 error: ‘std::map<std::basic_string<char>, int>::iterator’ has no member named ‘second’
     F << p.first << ": " << p.second << endl;

为什么它不起作用?

迭代器就像指针一样,必须使用:

cout << p->first << ": " << p->second << endl;

远程循环( auto的示例(为您做到了。