我有一個迭代器的問題。你能解釋我爲什麼這個代碼: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