我有一个迭代器的问题。你能解释我为什么这个代码:C++迭代器错误
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
vector<int> var = *it;
sort(var.begin(), var.end());
}
是确定与此代码:
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
sort(*it.begin(), *it.end());
}
是错的?编译器说*它没有成员开始,但我不知道为什么。
另请注意,您的第一个循环没有外部效应 - 您将矢量复制到本地,将其排序,然后将其丢弃。你应该声明'var'作为非const引用。 – 2012-01-09 22:30:11
我已经检查过它的工作原理(参考)。谢谢。还有一个问题。我不能使用const引用,因为迭代器是一个非const指针?当我试图创建'const_iterator'时,它没有编译。也许当sort方法正在改变元素时,变量'var'应该指向另一个位于向量开头的元素(因此它不能是const)? – JosephConrad 2012-01-09 23:22:04