我有迭代器的问题.你能解释一下为什么这段代码:
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
vector<int> var = *it;
sort(var.begin(), var.end() );
}
Run Code Online (Sandbox Code Playgroud)
没问题,使用以下代码:
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
sort(*it.begin(), *it.end() );
}
Run Code Online (Sandbox Code Playgroud)
是错的?编译说,*它没有成员开始,但我不知道为什么.
Jam*_*lis 11
运算符优先级.
*it.begin()是一样的*(it.begin()).你需要(*it).begin()(或等效的表达式it->begin()).
也就是说,你需要"调用成员函数begin()的对象指向it",而不是"尊重调用成员函数的结果begin()上it"(it有没有成员函数begin(),这就是为什么编译器给你,你得到的错误信息).