C++ it.first和it->;之间的区别是什么;第一?
这给了我一个错误。C++ it.first和it->;之间的区别是什么;第一?,c++,c++11,hashmap,C++,C++11,Hashmap,这给了我一个错误。为什么我必须使用it.second和it.first而不是it->second和it->first 在第一个循环中,您使用迭代器来迭代容器M。迭代器模拟指针,必须取消引用以给出迭代器“指向”的值。事实上,对于该循环,it->first实际上与(*it.first相同 在第二个循环中,循环容器M中的值。循环本身在内部使用迭代器,并为您取消引用迭代器。关于“基于范围的for循环”可能会对您有所帮助。基本上,您可以使用操作符访问对象的成员,it->first仅表示(*it)。firs
为什么我必须使用
it.second
和it.first
而不是it->second
和it->first
在第一个循环中,您使用迭代器来迭代容器M
。迭代器模拟指针,必须取消引用以给出迭代器“指向”的值。事实上,对于该循环,it->first
实际上与(*it.first
相同
在第二个循环中,循环容器
M
中的值。循环本身在内部使用迭代器,并为您取消引用迭代器。关于“基于范围的for
循环”可能会对您有所帮助。基本上,您可以使用
操作符访问对象的成员,it->first
仅表示(*it)。first
。因此,它是一个指针,指向变量,变量中有一个成员首先
,因此要访问首先
,只需取消引用指针,然后使用
访问该成员。
现在,如果it
是您的变量,而不是指向该变量的指针,那么您只需通过it.first
访问其成员first
for(auto it = M.begin(); it!=M.end();it++)
{
cout<<it->first<<" "<<it->second<<"\n";
}
for(auto it : M)
{
if(it->second == 1) return it->first;
}