gpt4 book ai didi

c++ - 为什么映射迭代器显示基本操作数无效错误?

转载 作者:行者123 更新时间:2023-11-27 23:47:33 25 4
gpt4 key购买 nike

所以我尝试制作一个 map ,然后选择它的 begin() 作为第一个迭代器位置。然后我尝试在基于范围的 for 循环中使用它。在这里查看这段代码:

long int lilysHomework(map<long int,long int>& a,int n,map<long int,long int>& p) 

{
long int c=0;
map<long int,long int>::iterator pos;
pos=p.begin();
for(auto& elem : a)
{
if((pos->second)!=(elem->first)) //fix this part
c++;
pos++;
}
c--;
cout << c;
return c;
}

但是在第 6 行我得到一个错误,说 base operator has non pointer type。我知道迭代器总是返回地址,所以它应该能够被取消引用。有人可以帮帮我吗?

最佳答案

for(auto& elem : a)

不会使 elem 成为迭代器。它使 elem 成为 std::map::value_type

使用

if ( (pos->second) != (elem.first) ) { ... }

关于c++ - 为什么映射迭代器显示基本操作数无效错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49397716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com