2
爲什麼這段代碼給我的錯誤:矢量迭代器不兼容矢量迭代器不兼容:DEBUG
這段代碼被追溯到Rogue Wave的文件tpordvec.h
std::vector<T*> v;
const T* a // Where T is a template Class
for (std::vector<T*>::iterator p = v.begin(); p != v.end(); p++)
{
if (**p == *a)
{
T* temp = *p;
if (v.erase(p) == v.end()) //ASSERTION ERROR HERE
return NULL;
return temp;
}
}
啊!是的,在最初調用原始代碼'end()'時會稍微違反直覺(根據我的調試器),然後'erase()'使'end()'返回的迭代器失效。 –
太棒了,我明白了。感謝解釋隊友。 – melbah