【发布时间】:2020-12-22 19:12:10
【问题描述】:
As per this question,并且假设我对容器本身有一个可变引用,可以使用 安全地 删除迭代器的常量:
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 迭代器的 const 性吗?最好不要通过迭代!
【问题讨论】:
标签: c++