簡體   English   中英

c ++迭代器錯誤

[英]c++ iterator error

我有迭代器的問題。 你能解釋一下為什么這段代碼:

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

是錯的? 編譯說,*它沒有成員開始,但我不知道為什么。

運算符優先級。

*it.begin()*(it.begin()) 你需要(*it).begin() (或等效表達式, it->begin() )。

也就是說,你需要“調用it指向的對象的成員函數begin() ,”而不是“deference調用成員函數begin()it ”( it沒有成員函數begin() ,這就是編譯器為您提供錯誤消息的原因。

運營商 ”。” 比運營商“*”更強大。 嘗試

vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++){
   sort(it->begin(), it->end() );
}

代替。

你的代碼是這樣的:

vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
  sort(*(it.begin()), *(it.end()) );
}

it只是沒有成員begin因為it是一個簡單的迭代器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM