相关疑难解决方法(0)

std :: reverse_iterator的缺点是什么?

boost的专用迭代器适配器的文档声明boost::reverse_iterator"纠正了C++ 98的std :: reverse_iterator的许多缺点."

这些缺点是什么?我似乎无法找到这些缺点的描述.

后续问题:

boost :: reverse_iterator如何纠正这些缺点?

c++ boost iterator stl

18
推荐指数
1
解决办法
1797
查看次数

为什么以下代码崩溃?

这只是创建了一些列表元素,然后在开始时通过反向迭代删除元素.它是代码的实际问题的复制品,它在反向遍历它们时删除元素.

#include <list>

int main()
{
  std::list< int > lst;

  for ( int c = 33; c--; )
    lst.push_back( 0 );

  int count = 0;
  for ( std::list< int >::reverse_iterator i = lst.rbegin(), e = lst.rend();
        i != e; )
  {
    switch( count++ )
    {
      case 32:
      case 33:
        ++i;
        i = std::list< int >::reverse_iterator( lst.erase( i.base() ) );
      break;
      default:
        ++i;
    }
  }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

运行时,它会崩溃:

*** glibc detected *** ./a.out: double free or corruption (out): 0x00007fff7f98c230 *** …
Run Code Online (Sandbox Code Playgroud)

c++ crash list

8
推荐指数
1
解决办法
1141
查看次数

标签 统计

c++ ×2

boost ×1

crash ×1

iterator ×1

list ×1

stl ×1