[英]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.