擦除段故障,但循环擦除

时间:2019-02-04 03:58:41

标签: c++ stdvector

我在此行遇到段错误:

v.erase(std::remove_if(v.begin(),elem.end(),
         [](Elem  * elem ){return elem->busy_ == false ;}));

使用gdb进行调查:

(gdb) print v.begin()
$6 = 0x842b120
(gdb) print v.end()
$7 = 0x0
(gdb) print v.back()
$8 = (Elem *) 0x842b120

Valgrind不会检测到任何问题(segfault除外)。 我将相关代码交换为:

    auto begin = v.begin();
    while( begin != v.end() )
     {
        if((*begin)->busy_ == false) begin=v.erase(begin);
        else begin++;
     }       

我想念什么?

0 个答案:

没有答案