C++11 (*it)first和it->;之间有什么区别;第一?
C++11 (*it)first和it->;之间有什么区别;第一?,c++11,iterator,C++11,Iterator,(*it.first和it->first之间有什么区别 它们是否可以互换使用,例如在下面的代码中? 此外,如果有人有一个好的资源,我可以学习迭代器,这将非常有帮助。特别是关于这行vector::iterator有人能解释一下吗? vector<pair<int, int>> adj[10005]; //For storing vertices, weights of a directed graph as an adjacency list for(int i = 1;
(*it.first
和it->first
之间有什么区别它们是否可以互换使用,例如在下面的代码中? 此外,如果有人有一个好的资源,我可以学习迭代器,这将非常有帮助。特别是关于这行
vector::iterator代码>有人能解释一下吗?
vector<pair<int, int>> adj[10005]; //For storing vertices, weights of a directed graph as an adjacency list
for(int i = 1; i <= V; i++)//GOING THROUGH EACH VERTEX
{
vector<pair<int, int>>:: iterator it;
for(it = adj[i].begin(); it != adj[i].end(); it++)
{
cout<<it->first<<" ";
cout<<it->second<<"\n";
}
}
向量调整[10005]//为了存储顶点,将有向图的权重作为邻接列表
对于(int i=1;i迭代器的设计使其与指针一样使用。对于指针,p->expr
是(*p)的“速记”。expr
,因此迭代器的设计使it->expr
与(*it)做同样的事情.expr
。如果您只想知道如何使用它们,那么就要知道it->expr
和(*it).expr
是等效的
如果你想知道更多关于引擎盖下的内容,请继续阅读
该标准只是对迭代器的实现方式定义了一些限制和要求,但没有定义实际的类型。对于随机访问迭代器(例如,std::vector::iterator
)迭代器可以是指针的别名。某些实现,特别是在调试模式下,为迭代器定义一个实际类以进行额外的安全检查。对于非随机访问迭代器,唯一的选项是定义迭代器类
如果它是一个类,那么:
(*it)
将调用迭代器::运算符*()
,该运算符应返回指向指向对象的引用。然后.expr
只是指向类型的成员访问运算符
it->expr
将调用Iterator::operator->()
,它将返回指向所指向对象的指针,然后访问expr
成员
技术上有区别。实际上没有区别。至于推荐资源,这不是本网站的主题。好的,这是我刚刚发现的一个很棒的网站