遍历地图

问题描述 投票:-1回答:1

我在此代码中遇到错误?有人能说出原因吗?尽管可以在GFG上使用类似的代码附上代码假定头文件bits / stdc ++。h和名称空间std

int main(){

int n;
cin >> n;
map<ll, vector<int>> val;
ll arr[n] = {0};
for(int i=0;i<n;i++)    cin >> arr[i];
for(int i=0;i<n;i++)    val[arr[i]].push_back(i);
for(auto i:val){
    cout << "Element        Indexes\n"; 
    cout << val.first << " ----> " ;
    for(auto j : val.second)        
        cout << j << " ";
    cout << "\n";
}
return 0;

}

prog.cpp:在函数'int main()'中:

prog.cpp:15:21:错误:“ class std :: map>”

没有名为“第一”的成员cout << val.first <”;^

prog.cpp:16:33:错误:“ class std :: map>”没有名为“ second”的成员for(自动常量&j:val.second)^

c++ maps c++14
1个回答
0
投票

类似于错误消息,指出valstd::map<ll, std::vector<int>>没有第一和第二个成员,而下划线std::pair<const ll, std::vector<int>>有那些。

意味着您的第一个for循环。 (假设lllong long的类型别名)

for (auto i : val) // auto = std::pair<const ll, std::vector<int>>

因此您应该有

for (const auto& i : val)
{
    // code
    for (const auto& j : i.second)  // auto = std::vector<int>
      // code
}
© www.soinside.com 2019 - 2024. All rights reserved.