我相信自从C ++ 11以来,大多数容器的erase
函数(例如std::vector
)接受const_iterator
作为参数:
iterator erase (const_iterator position);
我的编译器(GCC 4.8和Clang 3.2都使用GCC libstdc ++)不允许我使用这样的功能,即使用--std=c++11
进行编译也是如此。
它是编译器/ libstdc ++错误,还是我做了坏事?这是一个示例代码:
#include <vector>
int main( )
{
std::vector<int> v;
v.push_back( 1 );
v.push_back( 2 );
v.push_back( 3 );
std::vector<int>::const_iterator i = v.begin();
while( i != v.end() ) {
i = v.erase( i );
}
return 0;
}