根据这个问题,并假设我拥有对容器本身的可变引用,可以使用以下方法安全地去除迭代器的常量性:
然而,对于
foo::const_iterator cit = ... ;
foo::iterator it = c.erase( cit, cit );
然而,对于
forward_list
的相应函数erase_after
来说,似乎并不起作用,如以下代码所示:#include <iostream>
#include <forward_list>
typedef std::forward_list<int>::const_iterator CIT;
typedef std::forward_list<int>::iterator IT;
int main()
{
std::forward_list<int> m{1, 2, 3};
CIT cit = m.begin();
IT it = m.erase_after(cit, cit); // Segmentation fault!
std::cout << *it;
}
那么有没有办法在这个类中移除const迭代器的constness呢?最好不要通过迭代来实现!