Gan*_*458 1 c++ iterator stl list
for(std::list<MyClass *>::iterator it = m_currentJobs.begin(); it != m_currentJobs.end(); ++it)
{
request = *it;
if(request != NULL)
{
printf(request->status());
}
delete request;
m_currentJobs.erase(it);
}
Run Code Online (Sandbox Code Playgroud)
迭代器是否有可能指向列表末尾之外的一些垃圾数据?
小智 6
通过擦除它使您的迭代器无效.
您可以将循环更改为:
std::list<MyClass *>::iterator it = m_currentJobs.begin();
while(it != m_currentJobs.end())
{
// ...
it = m_currentJobs.erase(it);
}
Run Code Online (Sandbox Code Playgroud)
并回答你的问题:是的,可能有一个无效的迭代器(不限于过去的迭代器).使用这些涉及未定义的行为.
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |