1
對於上課,我正在制定一個管理酒店的計劃。當我的程序到達這個函數時,我得到一個運行時錯誤:向量迭代器不可取的。我使用調試器來查找問題區域,但我無法弄清楚它有什麼問題。有什麼建議麼?運行時錯誤 - 向量迭代器不可忽略?
Customer & ListOfCustomers::getByID(int id)
{
if(!sortedByID)sortByID();
vector<Customer>::iterator iter;
Customer cus;
cus.customerID=id;
iter = lower_bound(customers.begin(),customers.end(),cus,compareCustomersByID);
if( (*iter).customerID == id) // <---DEBUGGER SAYS ERROR HERE IN THIS LINE
{
return *iter;
}
else
{
return NullCustomer();
}
}
這裏是lower_bound函數。它是#include內部算法
template<class _FwdIt,
class _Ty,
class _Pr> inline
_FwdIt lower_bound(_FwdIt _First, _FwdIt _Last,
const _Ty& _Val, _Pr _Pred)
{// find first element not before _Val, using _Pred
// _DEBUG_ORDER_PRED(_First, _Last, _Pred);
return (_Rechecked(_First,
_Lower_bound(_Unchecked(_First), _Unchecked(_Last), _Val, _Pred,
_Dist_type(_First))));
}
編輯:添加一個空格,以便lower_bound函數將被正確格式化爲代碼。
也許'ITER == customers.end()'? – quasiverse 2012-04-03 00:47:37
@quasiverse我仍然遇到同樣的錯誤,當我嘗試應用 – Mike 2012-04-03 00:57:44
像quasicverse說,我的猜測是iter指針是不正確的。另外,發佈lower_bound函數會很有用。 – RStrad 2012-04-03 01:11:22