我在此代码中遇到错误?有人能说出原因吗?尽管可以在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)^
类似于错误消息,指出val
是std::map<ll, std::vector<int>>
没有第一和第二个成员,而下划线std::pair<const ll, std::vector<int>>
有那些。
意味着您的第一个for循环。 (假设ll
是long 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
}