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;
    }