我創建了這個函數,它可以處理矢量,鏈表和雙鏈表。該函數獲取一個值並在容器中搜索它。如果vlaue位於容器中,則該函數將在已存在的位置旁邊插入值。所以,如果val=2
那麼{3,2,5}
將變成{3,2,2,5}
。但是,如果該容器中不存在該值,則會將其添加到後面。EXC與迭代器訪問錯誤
我用迭代器編寫了這個函數。它適用於矢量,但是當我嘗試使用列表或雙鏈表來運行它時,我會在行if (*it==val)
處發生Exc Bad Access錯誤。我沒有看到我做錯了什麼。
template <class Container, class T>
void insertNextTo(Container &x, const T &val){
typename Container::iterator it = x.begin();
while (it!=x.end() && *it!=val){
++it;
}
if (*it == val){
x.insert(it, val);
}
else{
x.push_back(val);
}
}
編輯:謝謝大家!您的建議更改if
聲明完美無缺!
如果沒有找到'val',那麼'if'條件推斷導致UB的結束元素。 – Mahesh