遇到一個迭代器相關的問題,在回圈中呼叫了func()之后就會報運行時錯誤,提示迭代器i越界了,但是func()僅僅對i進行了解參考,沒有對i進行更改,然而去掉func()之后就能正常執行,是不是因為對i進行了解參考導致內部出了什么問題呢
bool func(const char c)
{
return true;
}
void main()
{
string s("1");
for(auto i = s.cbegin(); func(*i) && s.cend() != i; i++);//運行時錯誤,迭代器i越界
//for(auto i = s.cbegin();s.cend() != i; i++);//正常運行
}
uj5u.com熱心網友回復:
因為你已經到了尾部啊,再對它解參考當然出錯改成
for(auto i = s.cbegin(); s.cend() != i&&func(*i); i++);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/185069.html
標籤:C++ 語言
